Merge: Remove useless empty line
authorJean Privat <jean@pryen.org>
Tue, 3 Dec 2019 15:39:52 +0000 (10:39 -0500)
committerJean Privat <jean@pryen.org>
Tue, 3 Dec 2019 15:39:52 +0000 (10:39 -0500)
I was reading that file recently and noticed this empty line :p

Pull-Request: #2807

487 files changed:
.gitlab-ci.yml
README.md
benchmarks/bench_old.sh [new file with mode: 0755]
contrib/github_merge/github_merge.nit
contrib/github_search_for_jni/src/github_search_for_jni.nit
contrib/neo_doxygen/Makefile [deleted file]
contrib/neo_doxygen/README.md [deleted file]
contrib/neo_doxygen/gen-all.sh [deleted file]
contrib/neo_doxygen/gen-one.sh [deleted file]
contrib/neo_doxygen/package.ini [deleted file]
contrib/neo_doxygen/sh-lib/README.md [deleted file]
contrib/neo_doxygen/sh-lib/errors.sh [deleted file]
contrib/neo_doxygen/sh-lib/more_sed.sh [deleted file]
contrib/neo_doxygen/src/doxml/compounddef.nit [deleted file]
contrib/neo_doxygen/src/doxml/doc_listener.nit [deleted file]
contrib/neo_doxygen/src/doxml/doxml.nit [deleted file]
contrib/neo_doxygen/src/doxml/doxyname.nit [deleted file]
contrib/neo_doxygen/src/doxml/entitydef.nit [deleted file]
contrib/neo_doxygen/src/doxml/language_specific.nit [deleted file]
contrib/neo_doxygen/src/doxml/listener.nit [deleted file]
contrib/neo_doxygen/src/doxml/memberdef.nit [deleted file]
contrib/neo_doxygen/src/graph_store.nit [deleted file]
contrib/neo_doxygen/src/model/class_compound.nit [deleted file]
contrib/neo_doxygen/src/model/descriptions.nit [deleted file]
contrib/neo_doxygen/src/model/graph.nit [deleted file]
contrib/neo_doxygen/src/model/inner_class.nit [deleted file]
contrib/neo_doxygen/src/model/linked_text.nit [deleted file]
contrib/neo_doxygen/src/model/location.nit [deleted file]
contrib/neo_doxygen/src/model/member.nit [deleted file]
contrib/neo_doxygen/src/model/module_compound.nit [deleted file]
contrib/neo_doxygen/src/model/namespace_members.nit [deleted file]
contrib/neo_doxygen/src/model/type_entity.nit [deleted file]
contrib/neo_doxygen/src/neo_doxygen.nit [deleted file]
contrib/neo_doxygen/src/tests/README.md [deleted file]
contrib/neo_doxygen/src/tests/neo_doxygen_doc_module_class.nit [deleted file]
contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit [deleted file]
contrib/neo_doxygen/src/tests/neo_doxygen_file_compound.nit [deleted file]
contrib/neo_doxygen/src/tests/neo_doxygen_namespace_members.nit [deleted file]
contrib/neo_doxygen/src/tests/tests.nit [deleted file]
contrib/neo_doxygen/tests/.gitattributes [deleted file]
contrib/neo_doxygen/tests/.gitignore [deleted file]
contrib/neo_doxygen/tests/Makefile [deleted file]
contrib/neo_doxygen/tests/README.md [deleted file]
contrib/neo_doxygen/tests/doxyproject.mk [deleted file]
contrib/neo_doxygen/tests/empty-project/Doxyfile [deleted file]
contrib/neo_doxygen/tests/empty-project/README.md [deleted file]
contrib/neo_doxygen/tests/empty-project/xml/combine.xslt [deleted file]
contrib/neo_doxygen/tests/empty-project/xml/compound.xsd [deleted file]
contrib/neo_doxygen/tests/empty-project/xml/index.xml [deleted file]
contrib/neo_doxygen/tests/empty-project/xml/index.xsd [deleted file]
contrib/neo_doxygen/tests/inner-class/Doxyfile [deleted file]
contrib/neo_doxygen/tests/inner-class/README.md [deleted file]
contrib/neo_doxygen/tests/inner-class/src/OuterClass.java [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/_outer_class_8java.xml [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/class_outer_class.xml [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/class_outer_class_1_1_inner_class.xml [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/combine.xslt [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/compound.xsd [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/index.xml [deleted file]
contrib/neo_doxygen/tests/inner-class/xml/index.xsd [deleted file]
contrib/neo_doxygen/tests/java-project/Doxyfile [deleted file]
contrib/neo_doxygen/tests/java-project/README.md [deleted file]
contrib/neo_doxygen/tests/java-project/src/org/example/foo/A.java [deleted file]
contrib/neo_doxygen/tests/java-project/src/org/example/foo/B.java [deleted file]
contrib/neo_doxygen/tests/java-project/src/org/example/foo/C.java [deleted file]
contrib/neo_doxygen/tests/java-project/src/org/example/foo/EmptyClass.java [deleted file]
contrib/neo_doxygen/tests/java-project/xml/_a_8java.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/_b_8java.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/_c_8java.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/_empty_class_8java.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_a.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_b.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_empty_class.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/combine.xslt [deleted file]
contrib/neo_doxygen/tests/java-project/xml/compound.xsd [deleted file]
contrib/neo_doxygen/tests/java-project/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/dir_8c35fc67c36f89d827afb23e8c52a418.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/dir_ad5d6582648a7bbb3a301939a41e6c0b.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/dir_b8e0663afee48cb679b74bbd21bdf843.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/index.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/index.xsd [deleted file]
contrib/neo_doxygen/tests/java-project/xml/interfaceorg_1_1example_1_1foo_1_1_c.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/namespaceorg.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example.xml [deleted file]
contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example_1_1foo.xml [deleted file]
contrib/neo_doxygen/tests/python-def/Doxyfile [deleted file]
contrib/neo_doxygen/tests/python-def/README.md [deleted file]
contrib/neo_doxygen/tests/python-def/xml/combine.xslt [deleted file]
contrib/neo_doxygen/tests/python-def/xml/compound.xsd [deleted file]
contrib/neo_doxygen/tests/python-def/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml [deleted file]
contrib/neo_doxygen/tests/python-def/xml/foo_8py.xml [deleted file]
contrib/neo_doxygen/tests/python-def/xml/index.xml [deleted file]
contrib/neo_doxygen/tests/python-def/xml/index.xsd [deleted file]
contrib/neo_doxygen/tests/python-def/xml/namespacefoo.xml [deleted file]
contrib/neo_doxygen/tests/root-namespace/Doxyfile [deleted file]
contrib/neo_doxygen/tests/root-namespace/README.md [deleted file]
contrib/neo_doxygen/tests/root-namespace/src/Foo.java [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/_foo_8java.xml [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/class_foo.xml [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/combine.xslt [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/compound.xsd [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/index.xml [deleted file]
contrib/neo_doxygen/tests/root-namespace/xml/index.xsd [deleted file]
contrib/nitcc/src/autom.nit
contrib/nitcc/tests/t
contrib/nitiwiki/src/wiki_base.nit
contrib/nitrpg/.gitignore [deleted file]
contrib/nitrpg/README.md [deleted file]
contrib/nitrpg/nitrpg.user.js [deleted file]
contrib/nitrpg/package.ini [deleted file]
contrib/nitrpg/src/achievements.nit [deleted file]
contrib/nitrpg/src/events.nit [deleted file]
contrib/nitrpg/src/events_generator.nit [deleted file]
contrib/nitrpg/src/game.nit [deleted file]
contrib/nitrpg/src/listener.nit [deleted file]
contrib/nitrpg/src/reactors.nit [deleted file]
contrib/nitrpg/src/statistics.nit [deleted file]
contrib/nitrpg/src/templates/panels.nit [deleted file]
contrib/nitrpg/src/templates/templates.nit [deleted file]
contrib/nitrpg/src/templates/templates_base.nit [deleted file]
contrib/nitrpg/src/templates/templates_events.nit [deleted file]
contrib/nitrpg/src/test_achievements.nit [deleted file]
contrib/nitrpg/src/test_events.nit [deleted file]
contrib/nitrpg/src/test_game.nit [deleted file]
contrib/nitrpg/src/test_helper.nit [deleted file]
contrib/nitrpg/src/test_listener.nit [deleted file]
contrib/nitrpg/src/test_statistics.nit [deleted file]
contrib/nitrpg/src/web.nit [deleted file]
contrib/nitrpg/www/styles/main.css [deleted file]
contrib/refund/.gitignore [deleted file]
contrib/refund/package.ini [deleted file]
contrib/refund/src/refund.nit [deleted file]
contrib/refund/src/refund_base.nit [deleted file]
contrib/refund/src/refund_json.nit [deleted file]
contrib/refund/tests/client_error1.json [deleted file]
contrib/refund/tests/client_error2.json [deleted file]
contrib/refund/tests/client_error3.json [deleted file]
contrib/refund/tests/client_error4.json [deleted file]
contrib/refund/tests/contractA1.json [deleted file]
contrib/refund/tests/contractA2.json [deleted file]
contrib/refund/tests/contractA3.json [deleted file]
contrib/refund/tests/contractA4.json [deleted file]
contrib/refund/tests/contractA5.json [deleted file]
contrib/refund/tests/contractB1.json [deleted file]
contrib/refund/tests/contractB2.json [deleted file]
contrib/refund/tests/contractB3.json [deleted file]
contrib/refund/tests/contractB4.json [deleted file]
contrib/refund/tests/contractB5.json [deleted file]
contrib/refund/tests/contractC1.json [deleted file]
contrib/refund/tests/contractC2.json [deleted file]
contrib/refund/tests/contractC3.json [deleted file]
contrib/refund/tests/contractD1.json [deleted file]
contrib/refund/tests/contractD2.json [deleted file]
contrib/refund/tests/contractD3.json [deleted file]
contrib/refund/tests/contractD4.json [deleted file]
contrib/refund/tests/contractE1.json [deleted file]
contrib/refund/tests/contractE2.json [deleted file]
contrib/refund/tests/contractE3.json [deleted file]
contrib/refund/tests/contractE4.json [deleted file]
contrib/refund/tests/contract_error1.json [deleted file]
contrib/refund/tests/contract_error2.json [deleted file]
contrib/refund/tests/contract_error3.json [deleted file]
contrib/refund/tests/contract_error4.json [deleted file]
contrib/refund/tests/dossier_error1.json [deleted file]
contrib/refund/tests/json_error2.json [deleted file]
contrib/refund/tests/json_error3.json [deleted file]
contrib/refund/tests/month_error1.json [deleted file]
contrib/refund/tests/month_error2.json [deleted file]
contrib/refund/tests/month_error3.json [deleted file]
contrib/refund/tests/month_error4.json [deleted file]
contrib/refund/tests/recl_date_error1.json [deleted file]
contrib/refund/tests/recl_date_error2.json [deleted file]
contrib/refund/tests/recl_date_error3.json [deleted file]
contrib/refund/tests/recl_date_error4.json [deleted file]
contrib/refund/tests/recl_error1.json [deleted file]
contrib/refund/tests/recl_error2.json [deleted file]
contrib/refund/tests/recl_error3.json [deleted file]
contrib/refund/tests/recl_error4.json [deleted file]
contrib/refund/tests/recl_fees_error1.json [deleted file]
contrib/refund/tests/recl_fees_error2.json [deleted file]
contrib/refund/tests/recl_fees_error3.json [deleted file]
contrib/refund/tests/recl_fees_error4.json [deleted file]
contrib/refund/tests/recl_soin_error1.json [deleted file]
contrib/refund/tests/recl_soin_error2.json [deleted file]
contrib/refund/tests/recl_soin_error3.json [deleted file]
contrib/refund/tests/res/client_error1.res [deleted file]
contrib/refund/tests/res/client_error2.res [deleted file]
contrib/refund/tests/res/client_error3.res [deleted file]
contrib/refund/tests/res/client_error4.res [deleted file]
contrib/refund/tests/res/contractA1.res [deleted file]
contrib/refund/tests/res/contractA2.res [deleted file]
contrib/refund/tests/res/contractA3.res [deleted file]
contrib/refund/tests/res/contractA4.res [deleted file]
contrib/refund/tests/res/contractA5.res [deleted file]
contrib/refund/tests/res/contractB1.res [deleted file]
contrib/refund/tests/res/contractB2.res [deleted file]
contrib/refund/tests/res/contractB3.res [deleted file]
contrib/refund/tests/res/contractB4.res [deleted file]
contrib/refund/tests/res/contractB5.res [deleted file]
contrib/refund/tests/res/contractC1.res [deleted file]
contrib/refund/tests/res/contractC2.res [deleted file]
contrib/refund/tests/res/contractC3.res [deleted file]
contrib/refund/tests/res/contractD1.res [deleted file]
contrib/refund/tests/res/contractD2.res [deleted file]
contrib/refund/tests/res/contractD3.res [deleted file]
contrib/refund/tests/res/contractD4.res [deleted file]
contrib/refund/tests/res/contractE1.res [deleted file]
contrib/refund/tests/res/contractE2.res [deleted file]
contrib/refund/tests/res/contractE3.res [deleted file]
contrib/refund/tests/res/contractE4.res [deleted file]
contrib/refund/tests/res/contract_error1.res [deleted file]
contrib/refund/tests/res/contract_error2.res [deleted file]
contrib/refund/tests/res/contract_error3.res [deleted file]
contrib/refund/tests/res/contract_error4.res [deleted file]
contrib/refund/tests/res/dossier_error1.res [deleted file]
contrib/refund/tests/res/json_error1.res [deleted file]
contrib/refund/tests/res/json_error2.res [deleted file]
contrib/refund/tests/res/json_error3.res [deleted file]
contrib/refund/tests/res/month_error1.res [deleted file]
contrib/refund/tests/res/month_error2.res [deleted file]
contrib/refund/tests/res/month_error3.res [deleted file]
contrib/refund/tests/res/month_error4.res [deleted file]
contrib/refund/tests/res/recl_date_error1.res [deleted file]
contrib/refund/tests/res/recl_date_error2.res [deleted file]
contrib/refund/tests/res/recl_date_error3.res [deleted file]
contrib/refund/tests/res/recl_date_error4.res [deleted file]
contrib/refund/tests/res/recl_error1.res [deleted file]
contrib/refund/tests/res/recl_error2.res [deleted file]
contrib/refund/tests/res/recl_error3.res [deleted file]
contrib/refund/tests/res/recl_error4.res [deleted file]
contrib/refund/tests/res/recl_fees_error1.res [deleted file]
contrib/refund/tests/res/recl_fees_error2.res [deleted file]
contrib/refund/tests/res/recl_fees_error3.res [deleted file]
contrib/refund/tests/res/recl_fees_error4.res [deleted file]
contrib/refund/tests/res/recl_soin_error1.res [deleted file]
contrib/refund/tests/res/recl_soin_error2.res [deleted file]
contrib/refund/tests/res/recl_soin_error3.res [deleted file]
contrib/refund/tests/tests.sh [deleted file]
contrib/wiringPi/README.md [deleted file]
contrib/wiringPi/examples/shift.nit [deleted file]
contrib/wiringPi/lib/wiringPi.nit [deleted file]
doc/manual/.gitignore [new file with mode: 0644]
doc/manual/Makefile [new file with mode: 0644]
doc/manual/attribute.md [new file with mode: 0644]
doc/manual/basic_type.md [new file with mode: 0644]
doc/manual/class.md [new file with mode: 0644]
doc/manual/constructor.md [new file with mode: 0644]
doc/manual/genericity.md [new file with mode: 0644]
doc/manual/makedoc.sh [new file with mode: 0755]
doc/manual/method.md [new file with mode: 0644]
doc/manual/module.md [new file with mode: 0644]
doc/manual/nitlanguage.sty [new file with mode: 0644]
doc/manual/nitreference.tex [new file with mode: 0644]
doc/manual/structure.md [new file with mode: 0644]
doc/manual/syntax.md [new file with mode: 0644]
doc/manual/variable.md [new file with mode: 0644]
doc/manual/virtual_type.md [new file with mode: 0644]
lib/config/config.nit
lib/core/bytes.nit
lib/core/collection/abstract_collection.nit
lib/core/stream.nit
lib/core/text/abstract_text.nit
lib/core/text/u16_string.nit [new file with mode: 0644]
lib/functional/README.md [new file with mode: 0644]
lib/functional/functional.nit [moved from contrib/neo_doxygen/src/tests/neo_doxygen_graph_empty_project.nit with 72% similarity]
lib/functional/functional_gen.nit [new file with mode: 0644]
lib/functional/functional_types.nit [new file with mode: 0644]
lib/functional/iter_extras.nit [new file with mode: 0644]
lib/functional/package.ini [new file with mode: 0644]
lib/functional/test_iter_extras.nit [new file with mode: 0644]
lib/functional/test_utils.nit [new file with mode: 0644]
lib/github/api.nit
lib/github/cache.nit
lib/github/events.nit
lib/github/github_curl.nit [deleted file]
lib/github/hooks.nit
lib/github/loader.nit
lib/github/test_github_curl.nit [deleted file]
lib/github/tests/mock/errors_404.res [new file with mode: 0644]
lib/github/tests/mock/repo_branches_master.res [new file with mode: 0644]
lib/github/tests/mock/repo_branches_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_comments_8982707.res [new file with mode: 0644]
lib/github/tests/mock/repo_commits_4e3c68_status.res [new file with mode: 0644]
lib/github/tests/mock/repo_commits_64ce1f.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_1000.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_comments_6020149.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_comments_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_events_199674194.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_events_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_issues_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_labels_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_labels_ok_will_merge.res [new file with mode: 0644]
lib/github/tests/mock/repo_milestones_4.res [new file with mode: 0644]
lib/github/tests/mock/repo_milestones_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_nit_contributors.res [new file with mode: 0644]
lib/github/tests/mock/repo_pulls_1000.res [new file with mode: 0644]
lib/github/tests/mock/repo_pulls_945_comments.res [new file with mode: 0644]
lib/github/tests/mock/repo_pulls_comment_21010363.res [new file with mode: 0644]
lib/github/tests/mock/repo_pulls_nit.res [new file with mode: 0644]
lib/github/tests/mock/repo_search_issues_nit.res [new file with mode: 0644]
lib/github/tests/mock/user_Morriar.res [new file with mode: 0644]
lib/github/tests/test_api.nit [new file with mode: 0644]
lib/github/tests/test_wallet.nit [new file with mode: 0644]
lib/github/wallet.nit
lib/graph/digraph.nit
lib/ini/README.md [new file with mode: 0644]
lib/ini/ini.nit
lib/ini/package.ini
lib/logger/logger.nit [new file with mode: 0644]
lib/logger/package.ini [moved from contrib/wiringPi/package.ini with 56% similarity]
lib/mongodb/mongodb.nit
lib/popcorn/README.md
lib/popcorn/pop_auth.nit
lib/popcorn/pop_logging.nit
lib/popcorn/pop_tracker.nit
lib/pthreads/concurrent_collections.nit
misc/docker/ci/Dockerfile
share/man/nitc.md
share/nitdoc/css/nitdoc.css
share/nitweb/stylesheets/nitlight.css
share/nitweb/stylesheets/nitweb.css
src/Makefile
src/astbuilder.nit
src/catalog/catalog.nit
src/compiler/abstract_compiler.nit
src/compiler/global_compiler.nit
src/compiler/separate_compiler.nit
src/compiler/separate_erasure_compiler.nit
src/contracts.nit [new file with mode: 0644]
src/doc/commands/commands_ini.nit
src/doc/commands/tests/test_commands.nit
src/doc/commands/tests/test_commands_catalog.nit
src/doc/static/static_structure.nit
src/doc/templates/html_model.nit
src/doc/templates/term_model.nit
src/doc/templates/tests/test_html_commands.sav/test_cmd_ancestors.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_call.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_children.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_comment.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_descendants.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_mains.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_mentities.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_parents.res
src/doc/templates/tests/test_html_commands.sav/test_cmd_search.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_ancestors.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_call.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_children.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_descendants.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_entity.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_features.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_mains.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_mentities.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_parents.res
src/doc/templates/tests/test_json_commands.sav/test_cmd_search.res
src/doc/templates/tests/test_json_model.nit
src/doc/templates/tests/test_json_model.sav/test_classdefs_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_classes_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_groups_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_modules_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_packages_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_propdefs_to_full_json.res
src/doc/templates/tests/test_json_model.sav/test_props_to_full_json.res
src/frontend/check_annotation.nit
src/frontend/code_gen.nit
src/frontend/test_frontend.nit [new file with mode: 0644]
src/indexing/tests/test_code_index.nit
src/interpreter/naive_interpreter.nit
src/loader.nit
src/metrics/readme_metrics.nit
src/model/mmodule.nit
src/model/model.nit
src/model/mpackage.nit
src/modelize/modelize_property.nit
src/nitcatalog.nit
src/nitdoc.nit
src/nitpackage.nit
src/nitpm.nit
src/nitunit.nit
src/nitweb.nit
src/nitx.nit
src/parser/lexer.nit
src/parser/nit.sablecc3xx
src/parser/parser.nit
src/parser/parser_abs.nit
src/parser/parser_nodes.nit
src/parser/parser_prod.nit
src/parser/tables_nit.c
src/rapid_type_analysis.nit
src/semantize/scope.nit
src/semantize/typing.nit
src/test_astbuilder.nit [new file with mode: 0644]
src/toolcontext.nit
tests/base_safe.nit [new file with mode: 0644]
tests/contracts.nit [new file with mode: 0644]
tests/contracts_abstract.nit [new file with mode: 0644]
tests/contracts_add.nit [new file with mode: 0644]
tests/contracts_attributs.nit [new file with mode: 0644]
tests/contracts_constructor.nit [moved from contrib/neo_doxygen/tests/python-def/src/foo.py with 69% similarity]
tests/contracts_ensures.nit [moved from contrib/wiringPi/examples/read.nit with 64% similarity]
tests/contracts_ensures_1.nit [moved from contrib/refund/Makefile with 62% similarity]
tests/contracts_ensures_2.nit [moved from contrib/wiringPi/examples/blink.nit with 61% similarity]
tests/contracts_ensures_3.nit [new file with mode: 0644]
tests/contracts_ensures_4.nit [new file with mode: 0644]
tests/contracts_ensures_sequence.nit [new file with mode: 0644]
tests/contracts_error.nit [new file with mode: 0644]
tests/contracts_expects.nit [new file with mode: 0644]
tests/contracts_expects_1.nit [new file with mode: 0644]
tests/contracts_expects_2.nit [moved from contrib/nitrpg/Makefile with 59% similarity]
tests/contracts_expects_3.nit [new file with mode: 0644]
tests/contracts_generic_type.nit [new file with mode: 0644]
tests/contracts_inheritance.nit [new file with mode: 0644]
tests/contracts_same_contract.nit [moved from contrib/neo_doxygen/src/model/model.nit with 68% similarity]
tests/contracts_static.nit [new file with mode: 0644]
tests/contracts_virtual_type.nit [moved from contrib/refund/tests/Makefile with 67% similarity]
tests/error_syntax.nit
tests/nit.args
tests/nitc.args
tests/nitcg.skip
tests/niti.skip
tests/nitvm.skip
tests/sav/base_safe.res [new file with mode: 0644]
tests/sav/base_safe_alt1.res [new file with mode: 0644]
tests/sav/base_safe_alt2.res [new file with mode: 0644]
tests/sav/base_safe_alt3.res [new file with mode: 0644]
tests/sav/base_safe_alt4.res [new file with mode: 0644]
tests/sav/contracts.res [new file with mode: 0644]
tests/sav/contracts_abstract.res [new file with mode: 0644]
tests/sav/contracts_add.res [new file with mode: 0644]
tests/sav/contracts_attributs.res [moved from contrib/neo_doxygen/tests/empty-project/src/org/example/foo/void.txt with 100% similarity]
tests/sav/contracts_constructor.res [new file with mode: 0644]
tests/sav/contracts_ensures.res [new file with mode: 0644]
tests/sav/contracts_ensures_1.res [new file with mode: 0644]
tests/sav/contracts_ensures_2.res [new file with mode: 0644]
tests/sav/contracts_ensures_3.res [new file with mode: 0644]
tests/sav/contracts_ensures_4.res [new file with mode: 0644]
tests/sav/contracts_ensures_5.res [new file with mode: 0644]
tests/sav/contracts_ensures_sequence.res [new file with mode: 0644]
tests/sav/contracts_error.res [new file with mode: 0644]
tests/sav/contracts_expects.res [moved from contrib/refund/tests/json_error1.json with 100% similarity]
tests/sav/contracts_expects_1.res [new file with mode: 0644]
tests/sav/contracts_expects_2.res [new file with mode: 0644]
tests/sav/contracts_expects_3.res [new file with mode: 0644]
tests/sav/contracts_generic_type.res [new file with mode: 0644]
tests/sav/contracts_inheritance.res [new file with mode: 0644]
tests/sav/contracts_same_contract.res [new file with mode: 0644]
tests/sav/contracts_static.res [new file with mode: 0644]
tests/sav/contracts_virtual_type.res [new file with mode: 0644]
tests/sav/curl_http_args1.res
tests/sav/curl_http_args2.res
tests/sav/curl_http_args3.res
tests/sav/error_syntax.res
tests/sav/nit_args9.res [new file with mode: 0644]
tests/sav/nitc_args12.res [new file with mode: 0644]
tests/sav/nitcatalog_args1.res
tests/sav/nitmetrics_args3.res
tests/sav/nitunit_args1.res
tests/sav/nitunit_args10.res
tests/sav/nitunit_args11.res
tests/sav/nitunit_args12.res
tests/sav/nitunit_args13.res
tests/sav/nitunit_args14.res
tests/sav/nitunit_args9.res
tests/sav/syntax_callref.res [new file with mode: 0644]
tests/sav/syntax_callref_alt1.res [new file with mode: 0644]
tests/sav/syntax_lambda.res [new file with mode: 0644]
tests/sav/syntax_lambda_alt1.res [new file with mode: 0644]
tests/sav/syntax_lambda_alt2.res [new file with mode: 0644]
tests/sav/test_astbuilder.res [new file with mode: 0644]
tests/sav/test_astbuilder_args1.res [new file with mode: 0644]
tests/sav/test_callref.res [new file with mode: 0644]
tests/sav/test_file_read3.res [new file with mode: 0644]
tests/sav/test_parser_args3.res
tests/sav/test_parser_args7.res
tests/sav/test_toolcontext_args1.res
tests/sav/test_toolcontext_args2.res
tests/syntax_annotations2.nit
tests/syntax_callref.nit [new file with mode: 0644]
tests/syntax_lambda.nit [new file with mode: 0644]
tests/test_astbuilder.args [new file with mode: 0644]
tests/test_astbuilder/test_astbuilder.nit [new file with mode: 0644]
tests/test_callref.nit [new file with mode: 0644]
tests/test_file_read3.nit [new file with mode: 0644]
tests/testall.sh
tests/tests.sh

index a0711b3..d4e5928 100644 (file)
@@ -29,6 +29,7 @@ before_script:
   - git config --add github.oauthtoken "$GITHUB_OAUTHTOKEN" # needed for github api rate limit
   - pwd
   - ccache -s
+  - ccache -z
   - ccache -M 500M
   - du -sh .gradle || true
   - type -a nitc nitdoc || true # is there some nit tools?
@@ -38,7 +39,7 @@ after_script:
   - export CCACHE_DIR=$PWD/.ccache
   - ccache -s
   - du -sh .gradle || true
-  - git status --ignored
+  - git status --ignored || true
   - date
   - tail status.txt
 
@@ -77,7 +78,7 @@ test_some: &test_some
   artifacts:
     paths:
       - tests/errlist
-      - tests/*.xml
+      - tests/*.xml*
     when: always
     reports:
       junit: tests/*.xml
@@ -87,9 +88,11 @@ nitunit_some:
   dependencies:
     - build_tools
   script:
-    - git diff --name-only origin/master..HEAD -- "*.nit" "*.res" "README.*" | grep -v "^tests/" > list0.txt || true
+    - git diff --name-only origin/master..HEAD -- "*.nit" "*.res" "README.*" | grep -v "^tests/\|contrib/" > list0.txt || true
     - xargs nitls -pP < list0.txt > list.txt
+    - test -s list.txt || exit 0
     - xargs nitunit < list.txt
+    - junit2html nitunit.xml
   artifacts:
     paths:
       - nitunit.xml*
@@ -221,6 +224,7 @@ nitunit_lib:
     - xargs nitunit -v < list.txt| tee log.txt
     - grep -e KO log.txt > status.txt || true
     - tail -3 log.txt >> status.txt
+    - junit2html nitunit.xml
   artifacts:
     paths:
       - nitunit.xml*
@@ -238,6 +242,7 @@ nitunit_src:
     - xargs nitunit -v < list.txt| tee log.txt
     - grep -e KO log.txt > status.txt || true
     - tail -3 log.txt >> status.txt
+    - junit2html nitunit.xml
   artifacts:
     paths:
       - nitunit.xml*
@@ -287,6 +292,22 @@ build_oot:
 
 # MISC ##############################################################
 
+check_requirments:
+  stage: more_test
+  image: debian:buster
+  before_script:
+    - date # cancel the default `before_script`, an empty list does nothing
+  script: # from the README
+    - apt-get update && apt-get install --yes --no-install-recommends build-essential ccache libgc-dev libunwind-dev pkg-config
+    - make
+    - bin/nitc examples/hello_world.nit
+    - ./hello_world
+    - . misc/nit_env.sh install
+    - nitc examples/hello_world.nit
+    - ./hello_world
+    - apt-get update && apt-get install --yes --no-install-recommends graphviz libcurl4-openssl-dev libevent-dev libmongoc-dev
+    - make more
+
 bootstrap_full:
   stage: more_test
   dependencies:
@@ -312,6 +333,20 @@ bench_fast:
       - benchmarks/*.gnu
     when: always
 
+nitunit_manual:
+  stage: more_test
+  dependencies:
+    - build_tools
+  script:
+    - nitunit doc/manual/*.nit
+    - junit2html nitunit.xml
+  artifacts:
+    paths:
+      - nitunit.xml*
+    when: always
+    reports:
+      junit:
+        - nitunit.xml
 
 # MORE TOOLS ########################################################
 
@@ -329,6 +364,21 @@ build_more_tools:
       - src/version.nit
       - src/nitc_0
 
+valgrind:
+  stage: more_test
+  dependencies:
+    - build_more_tools
+  script:
+    - mkdir -p valgrind.out
+    - nitc src/nitc.nit # To warm-up the cache
+    - src/valgrind.sh --callgrind-out-file=valgrind.out/nitc.nitc.out nitc src/nitc.nit -vv
+    - callgrind_annotate valgrind.out/nitc.nitc.out > valgrind.out/nitc.nitc.txt
+    - src/valgrind.sh --callgrind-out-file=valgrind.out/niti.niti.out nit -- src/nit.nit tests/base_simple3.nit -vv
+    - callgrind_annotate valgrind.out/niti.niti.out > valgrind.out/niti.niti.txt
+  artifacts:
+    paths:
+      - valgrind.out
+
 build_doc:
   stage: more_test
   dependencies:
@@ -340,6 +390,27 @@ build_doc:
     paths:
       - nitdoc.out
 
+build_manual:
+  stage: more_test
+  script:
+    - apt-get update && apt-get install --yes --no-install-recommends pandoc texlive texlive-latex-extra lmodern
+    - make -C doc/manual
+  artifacts:
+    paths:
+      - doc/manual/*.pdf
+      - doc/manual/*.epub
+
+nitmetrics:
+  stage: more_test
+  dependencies:
+    - build_more_tools
+  script:
+    - mkdir -p nitmetrics.out
+    - nitmetrics --all --log --log-dir nitmetrics.out --dir nitmetrics.out --keep-going lib src | tee nitmetrics.out/metrics.txt
+  artifacts:
+    paths:
+      - nitmetrics.out
+
 build_catalog:
   stage: more_test
   dependencies:
@@ -351,8 +422,6 @@ build_catalog:
     - ./oot.sh pre-build
     - cd ..
     - nitcatalog -d catalog.out lib/ examples/ contrib/ contrib/oot/
-  dependencies:
-    - build_more_tools
   artifacts:
     paths:
       - catalog.out
@@ -375,3 +444,27 @@ test_full_nitcs_macos:
     - macos
   dependencies:
     - build_tools_macos
+
+bench_old:
+  stage: more_test
+  tags:
+    - perf
+  dependencies:
+    - build_tools
+  script:
+    - benchmarks/bench_old.sh
+  allow_failure: true # time is unreliable. manual check required
+  services: []
+
+build_tools_windows:
+  stage: build
+  before_script:
+    - date
+  after_script:
+    - date
+  tags:
+    - windows
+  script:
+    - $project_dir = "$CI_PROJECT_DIR" -replace "\\", "\\\"
+    - $converted_project_dir = $(c:\msys64\usr\bin\bash -l -c "cygpath -u $project_dir")
+    - c:\msys64\usr\bin\env MSYSTEM=MINGW64 c:\msys64\usr\bin\bash -l -c "cd $converted_project_dir; make"
index 2679f4d..e499bbb 100644 (file)
--- a/README.md
+++ b/README.md
@@ -19,20 +19,19 @@ Requirements:
  * pkg-config  http://www.freedesktop.org/wiki/Software/pkg-config/
  * ccache      http://ccache.samba.org/        to improve recompilation
  * libgc-dev   http://hboehm.info/gc/
- * graphviz    http://www.graphviz.org/        to enable graphs with the nitdoc tool
  * libunwind   http://nongnu.org/libunwind
 
 Those are available in most Linux distributions
 
-    $ sudo apt-get install build-essential ccache libgc-dev graphviz libunwind-dev pkg-config
+    $ sudo apt-get install build-essential ccache libgc-dev libunwind-dev pkg-config
 
 and on OS X using brew
 
-    $ brew install ccache bdw-gc graphviz libunwind-headers pkgconfig
+    $ brew install ccache bdw-gc libunwind-headers pkgconfig
 
 or with MacPorts
 
-    $ sudo port install ccache boehmgc graphviz libunwind-headers pkgconfig
+    $ sudo port install ccache boehmgc libunwind-headers pkgconfig
 
 Important files and directories:
 
@@ -65,6 +64,20 @@ To have your environment automatically configured at login, just source it with
 
     $ . misc/nit_env.sh install
 
+
+More tools:
+
+Additional tools can also be compiled but require more dependencies.
+
+ * graphviz    http://www.graphviz.org/        to enable graphs with the nitdoc tool
+ * libcurl      https://curl.haxx.se/libcurl/   for the nit package manager nitpm
+ * libevent    https://libevent.org/           for the nit documentation server nitweb
+ * libmongoc    http://mongoc.org/              also for nitweb
+
+    $ sudo apt-get install graphviz libcurl4-openssl-dev libevent-dev libmongoc-dev
+    $ make more
+
+
 Contributing:
 
 To contribute to Nit, please see [CONTRIBUTING](CONTRIBUTING.md).
diff --git a/benchmarks/bench_old.sh b/benchmarks/bench_old.sh
new file mode 100755 (executable)
index 0000000..0111aa7
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/bash
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This shell script run and compare nitc with the one in origin/master
+
+# execute a command multiple time and store its executin metrics
+# $1 = output file (.tsv)
+# $2. = command to execute
+bench_one() {
+       out=$1
+       shift
+       > "$out"
+       echo "> $*"
+       echo -e "user\treal\t%cpu\tmem"
+       for i in `seq 6`; do
+               /usr/bin/time -o "$out" -a -f "%U\t%e\t%P\t%M" "$@" >/dev/null
+               tail -n 1 "$out"
+       done
+}
+
+# Get column $2, $3-th lowest value of tsv file $1
+get() {
+       cut -f "$2" < "$1" | sort -n | head -n "$3" | tail -n 1
+}
+
+# $1 + result% = $2
+percent() {
+       perl -e "printf '%+.1f', ($2/$1-1)*100;"
+}
+
+# compare two tsv generated by `bench_one`.
+# displays numbers and returns 1 if some execution metrics is above a threshold
+compare() {
+       # Chose the median value
+       u1=`get "$1" 1 3`
+       e1=`get "$1" 2 3`
+       m1=`get "$1" 4 3`
+       u2=`get "$2" 1 3`
+       e2=`get "$2" 2 3`
+       m2=`get "$2" 4 3`
+       ud=`percent "$u1" "$u2"`
+       ed=`percent "$e1" "$e2"`
+       md=`percent "$m1" "$m2"`
+       echo "Before: user=$u1 real=$e1 mem=$m1"
+       echo "After: user=$u2 ($ud%) real=$e2 ($ed%) mem=$m2 ($md%)"
+       # Fail if above threshold
+       perl -e "exit ($ud>=3 || $ed>=5 || $md>=0.3)"
+}
+
+set -e
+#set -x
+
+old=`git show --pretty="%h %D" --no-patch origin/master`
+new=`git show --pretty="%h %D" --no-patch`
+if [ ! -f bin/nitc_old ]; then
+       git checkout origin/master
+       nitc --semi-global src/nitc.nit -o bin/nitc_old -v
+       nitc --semi-global src/nit.nit -o bin/nit_old -v
+       git checkout -
+fi
+
+bench_one "nitc_old.tsv" nitc_old --no-cc src/nitc.nit
+bench_one "nitc_new.tsv" nitc --no-cc src/nitc.nit
+bench_one "nit_old.tsv" nit_old -- src/nitls.nit -p lib/core
+bench_one "nit_new.tsv" nit -- src/nitls.nit -p lib/core
+
+echo
+echo "Before is $old"
+echo "After is $new"
+echo "For nitc src/nitls.nit:"
+ret=0
+compare "nitc_old.tsv" "nitc_new.tsv" || ret=1
+echo "For nit src/nitls.nit -p lib/core:"
+compare "nit_old.tsv" "nit_new.tsv" || ret=1
+exit "$ret"
index f0717ff..cdb9de5 100644 (file)
 # Query the Github PR API to perform a merge
 module github_merge
 
-import github::github_curl
+import github::api
 import template
 import config
 
-redef class Object
-       # Factorize cast
-       fun json_as_a: JsonArray do return self.as(JsonArray)
-       # Factorize cast
-       fun json_as_map: JsonObject do return self.as(JsonObject)
-end
+redef class GithubAPI
 
-redef class GithubCurl
-       # Get a given pull request (PR)
-       fun getpr(repo: String, number: Int): nullable JsonObject
-       do
-               var ir = get_and_check("https://api.github.com/repos/{repo}/issues/{number}")
-               var irm = ir.json_as_map
-               if not irm.has_key("pull_request") then return null
-               var pr = get_and_check("https://api.github.com/repos/{repo}/pulls/{number}")
-               var prm = pr.json_as_map
-               var sha = prm["head"].json_as_map["sha"].to_s
-               var statuses = get_and_check("https://api.github.com/repos/{repo}/commits/{sha}/status")
-               statuses = statuses.json_as_map
-               prm["statuses"] = statuses
-               print "{prm["title"].to_s}: by {prm["user"].json_as_map["login"].to_s} (# {prm["number"].to_s})"
-               var mergeable = prm["mergeable"]
-               if mergeable != null then
-                       print "\tmergeable: {mergeable.to_s}"
-               else
-                       print "\tmergeable: unknown"
-               end
-               var state = statuses["state"]
-               if state == null then
-                       print "\tstatus: not tested"
-               else
-                       print "\tstatus: {state}"
-                       var sts = statuses["statuses"].json_as_a
-                       for st in sts do
-                               st = st.json_as_map
-                               var ctx = st["context"].to_s
-                               state = st["state"].to_s
-                               print "\tstatus {ctx}: {state}"
-                               prm["status-{ctx}"] = state
-                       end
-               end
-               return prm
+       # Get a given pull request and its state
+       private fun get_pull_with_state(repo: String, number: Int): nullable PullState do
+               var pull = get_pull(repo, number)
+               if not pull isa PullRequest then return null
+
+               var statuses = get_commit_status(repo, pull.head.sha)
+               if not statuses isa CommitStatus then return null
+
+               return new PullState(pull, statuses)
        end
 
        # Get reviewers of a PR
-       fun getrev(repo: String, pr: JsonObject): Array[String]
-       do
-               var number = pr["number"].as(Int)
-               var user = pr["user"].json_as_map["login"].as(String)
-               var comments = new Array[nullable Object]
-               comments.add_all(get_and_check("https://api.github.com/repos/{repo}/issues/{number}/comments").json_as_a)
-               comments.add_all(get_and_check("https://api.github.com/repos/{repo}/pulls/{number}/comments").json_as_a)
+       private fun get_pull_reviewers(repo: String, pull: PullRequest): Array[String] do
+               var user = pull.user.as(not null).login
+
+               var comments = new Array[Comment]
+               comments.add_all(get_issue_comments(repo, pull.number))
+               comments.add_all(get_pull_comments(repo, pull.number))
+
                var logins = new Array[String]
-               for c in comments do
-                       var cm = c.json_as_map
-                       var l = cm["user"].json_as_map["login"]
-                       assert l isa String
-                       if l != user and not logins.has(l) then logins.add(l)
+               for comment in comments do
+                       var login = comment.user.login
+                       if login != user and not logins.has(login) then logins.add(login)
                end
                var res = new Array[String]
-               for l in logins do
-                       var u = get_and_check("https://api.github.com/users/{l}").json_as_map
-                       if not u.has_key("name") or u["name"] == null or not u.has_key("email")or u["email"] == null then
-                               print "No public name/email for user {l}"
+               for login in logins do
+                       var rev = get_user(login)
+                       if rev == null or rev.name == null or rev.email == null then
+                               print "No public name/email for user {login}"
                                continue
                        end
-                       var r = "{u["name"].to_s} <{u["email"].to_s}>"
-                       res.add r
-
+                       res.add "{rev.name or else "N/A"} <{rev.email or else "N/A"}>"
                end
                return res
        end
+end
+
+private class PullState
+       var pull: PullRequest
+       var status: CommitStatus
+
+       fun pretty: String do
+               var s = new Buffer
+               s.append "{pull.title}: by {pull.user.as(not null).login} (# {pull.number})\n"
+               s.append "\tmergeable: {pull.mergeable or else "unknown"}\n"
+               s.append "\tstatus: {status.state or else "not tested"}\n"
+               for sub in status.statuses do
+                       s.append "\tstatus {sub.context or else "N/A"}: {sub.state or else "N/A"}\n"
+               end
+               return s.write_to_string
+       end
 
+       fun state_for(context: String): nullable String do
+               for sub in status.statuses do
+                       if sub.context == context then return sub.state
+               end
+               return null
+       end
 end
 
 if "NIT_TESTING".environ == "true" then exit 0
 
 var opt_repo = new OptionString("Repository (e.g. nitlang/nit)", "-r", "--repo")
 var opt_auth = new OptionString("OAuth token", "--auth")
-var opt_query = new OptionString("Query to get issues (e.g. label=ok_will_merge)", "-q", "--query")
+var opt_query = new OptionString("Query to get issues (e.g. label:ok_will_merge)", "-q", "--query")
 var opt_keepgoing = new OptionBool("Skip merge conflicts", "-k", "--keep-going")
 var opt_all = new OptionBool("Merge all", "-a", "--all")
 var opt_status = new OptionArray("A status context that must be \"success\" (e.g. default)", "--status")
@@ -131,23 +118,32 @@ var repo = opt_repo.value or else "nitlang/nit"
 
 var query = opt_query.value or else "labels=ok_will_merge"
 
-var curl = new GithubCurl(auth, "Merge-o-matic (nitlang/nit)")
+var api = new GithubAPI(auth, "Merge-o-matic (nitlang/nit)")
 
 if args.is_empty then
        # Without args, list `ok_will_merge`
-       var x = curl.get_and_check("https://api.github.com/repos/{repo}/issues?{query}")
+       var issues = api.search_repo_issues(repo, query)
+       if issues == null or issues.items.is_empty then
+               print "No issues for query `{query}`."
+               exit 1
+       end
        var list = new Array[String]
-       for y in x.json_as_a do
-               var number = y.json_as_map["number"].as(Int)
-               var pr = curl.getpr(repo, number)
-               if pr == null then continue
+       for issue in issues.as(not null).items do
+               if not issue isa Issue then continue
+               if not issue.is_pull_request then continue
+
+               var state = api.get_pull_with_state(repo, issue.number)
+               if not state isa PullState then continue
+
+               print state.pretty
                for ctx in opt_status.value do
-                       if pr.get_or_null("status-{ctx}") != "success" then
+                       if state.state_for(ctx) != "success" then
                                print "No \"success\" for {ctx}. Skip."
-                               continue label
+                               # continue label
                        end
                end
-               list.add number.to_s
+
+               list.add issue.number.to_s
        end label
 
        if not opt_all.value then return
@@ -157,23 +153,24 @@ end
 for arg in args do
        # With a arg, merge the PR
        var number = arg.to_i
-       var pr = curl.getpr(repo, number)
-       if pr == null then
+       var pull = api.get_pull(repo, number)
+       if pull == null then
                print "Not a PR: {number}"
                return
        end
-       var revs = curl.getrev(repo, pr)
+
+       var revs = api.get_pull_reviewers(repo, pull)
 
        var mergemsg = new Template
-       mergemsg.add "Merge: {pr["title"].to_s}\n\n"
-       mergemsg.add "{pr["body"].to_s}\n\n"
-       mergemsg.add "Pull-Request: #{pr["number"].to_s}\n"
-       for r in revs do
-               mergemsg.add "Reviewed-by: {r}\n"
+       mergemsg.add "Merge: {pull.title}\n\n"
+       mergemsg.add "{pull.body or else "N/A"}\n\n"
+       mergemsg.add "Pull-Request: #{pull.number}\n"
+       for rev in revs do
+               mergemsg.add "Reviewed-by: {rev}\n"
        end
        mergemsg.write_to_file("mergemsg")
 
-       var sha = pr["head"].json_as_map["sha"].as(String)
+       var sha = pull.head.sha
        if system("git show -s --pretty=format:%h {sha}") != 0 then
                print "Commit {sha} not in local repository; did you fetch github?"
                return
index 8029b2e..f9927c1 100644 (file)
@@ -17,7 +17,8 @@
 # Script to scan Github for repositories possibly using JNI.
 module github_search_for_jni
 
-import github::github_curl
+import github::api
+import json::static
 
 # The proprieties introduced by this redef are to be used only on a JSON object
 # representing a Github repository.
@@ -51,8 +52,8 @@ end
 # Query sent to Github
 var main_query = "language:java"
 
-# Curl instance use for all requests
-var curl = new GithubCurl("OAUTH TOKEN (replace with your own)", "JNI project finder (nitlanguage.org)")
+# API client instance use for all requests
+var api = new GithubAPI("OAUTH TOKEN (replace with your own)", "JNI project finder (nitlanguage.org)")
 
 if "NIT_TESTING".environ == "true" then exit 0
 
@@ -61,8 +62,8 @@ var page = 0
 var per_page = 100
 loop
        # Get a page of the main query
-       var uri = "https://api.github.com/search/repositories?q={main_query}&page={page}&per_page={per_page}&sort=stars"
-       var obj = curl.get_and_check(uri).as(JsonObject)
+       var uri = "/search/repositories?q={main_query}&page={page}&per_page={per_page}&sort=stars"
+       var obj = api.send("GET", uri).parse_json.as(JsonObject)
 
        # Main object has "total_count" and "items"
        var items = obj["items"].as(JsonArray)
@@ -77,7 +78,7 @@ loop
 
                # Download the language list
                var lang_url = item["languages_url"].as(String)
-               var langs = curl.get_and_check(lang_url).as(JsonObject)
+               var langs = api.send("GET", lang_url).parse_json.as(JsonObject)
 
                # The project is of interest if it has lots of Java and at least some C
                var may_be_of_interest = langs.has_lots_of_java and langs.has_some_c
diff --git a/contrib/neo_doxygen/Makefile b/contrib/neo_doxygen/Makefile
deleted file mode 100644 (file)
index ccda8cb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-NITC ?= nitc
-NITLS ?= nitls
-NITUNIT ?= nitunit
-NITDOC ?= nitdoc
-
-NEO4J_DIR=/var/lib/neo4j
-OLD_PWD=${PWD}
-
-.PHONY: all
-all: bin/neo_doxygen
-
-bin/neo_doxygen: $(shell $(NITLS) -M src/neo_doxygen.nit)
-       mkdir -p bin/
-       $(NITC) src/neo_doxygen.nit -o bin/neo_doxygen
-
-.PHONY: check
-check:
-       $(NITUNIT) .
-
-# Reset the local graph.
-.PHONY: reset-neo
-reset-neo:
-       sudo -u neo4j "${NEO4J_DIR}/bin/neo4j" stop \
-               && sudo -u neo4j rm -rf "${NEO4J_DIR}/data/graph.db" \
-               && sudo -u neo4j "${NEO4J_DIR}/bin/neo4j" start
-
-# Regenerate the XML documents in `tests`.
-.PHONY: tests
-tests:
-       $(MAKE) -C tests
-
-# Run the tests.
-.PHONY: run-tests
-run-tests:
-       cd ../../tests; \
-               ./tests.sh ../contrib/neo_doxygen/src/tests/neo_doxygen_*.nit ; \
-               cd "${OLD_PWD}"
-
-.PHONY: doc
-doc:
-       $(NITDOC) . -o doc/
-
-.PHONY: clean
-clean:
-       rm -rf bin/
-       rm -rf doc/
diff --git a/contrib/neo_doxygen/README.md b/contrib/neo_doxygen/README.md
deleted file mode 100644 (file)
index c33e770..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-# neo_doxygen
-
-This project provides a tool to convert a Doxygen XML output into a model in
-Neo4j that is readable by the `nx` tool.
-
-
-## Installation
-
-Ensure that you have a working version of `nitc` in `../../bin` then run `make`
-in the present directory. The executable will be then generated at
-`bin/neo_doxygen`.
-
-
-## Usage
-
-Here is the procedure to generate an HTML documentation of a project using the
-formatting of Nitdoc:
-
-1. First run Doxygen to generate an XML output of the documentation. In order to do
-this, you have to enable the `GENERATE_XML` option. Note that you can disable
-the `XML_PROGRAMLISTING` to speed up the process and save disk space.
-
-       <strong>Important</strong>
-
-       `neo_doxygen` do not read the `index.xml` file to know which file to load. As a
-       result, it may read files let by previous runs of Doxygen. To avoid producing
-       garbage, always clear the destination directory of the XML files before running
-       Doxygen.
-
-       Example: `rm -rf doxygen/xml && doxygen Doxyfile`
-
-2. Use `bin/neo_doxygen` to generate the Neo4j graph. For details, run
-`bin/neo_doxygen --help`.
-
-       <strong>Important</strong>
-
-       `neo_doxygen` do not remove what is already in the graph. So, you have to
-       manualy clear the graph (or at least, the subgraph contaning all the nodes
-       labelled with the specified project name) between each run.
-
-       For an example of how to delete an entire Neo4j database, see
-       `make reset-neo`.
-
-       Example: `make reset-neo && neo_doxygen my_project doxygen/xml`
-
-3. Use the `nx` tool to generate the HTML documentation from the previously
-generated graph.
-
-       Note: `nx` need to be configured before usage. For more details, refer to
-       the documentation of `nx`.
-
-       Example: `nx neo doc my_project`
-
-
-## Shell scripts
-
-The two shell scripts (`gen-one.sh` and `gen-all.sh`) are provided to automate
-the execution of `neo_doxygen` and `nx` for some typical cases and to give a
-starting for the development of similar scripts. In order for them to work,
-each project on which they operate **must** contain the following files:
-
- * The `.nx_config` configuration file for the `nx` tool, located at the root
-       of the project.
-
- * The XML documents generated by Doxygen, located in the `doxygen/xml`
-       directory.
-
-Also, they **must** be run with the current working directory set to the present
-directory. `gen-one.sh` handle only one project at a time while `gen-all.sh`
-works on a collection of projects grouped in a directory. For detail about how
-to invoke each script, see the comments in these scripts.
-
-
-## Brief descriptions
-
-To populate the first line of a description (used as brief description in
-Nitdoc), `neo_doxygen` uses the brief description provided by Doxygen. So, you
-may need to change settings like `JAVADOC_AUTOBRIEF`, `QT_AUTOBRIEF` and
-`MULTILINE_CPP_IS_BRIEF` in Doxygen to make `neo_doxygen` properly split the
-brief description from the detailed description. In absence of brief
-description, `neo_doxygen` will use the first block (usually, the first
-paragraph) of the detailed as brief description.
-
-
-## Python
-
-The built-in filter of Doxygen for Python is very basic. For example, it
-recognizes anything in the “docstrings” as verbatim detailed description. In
-order to enhance the processing of the Python scripts, the
-[doxypypy](https://github.com/Feneric/doxypypy) filter may be used.
diff --git a/contrib/neo_doxygen/gen-all.sh b/contrib/neo_doxygen/gen-all.sh
deleted file mode 100755 (executable)
index 4a19e9a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /bin/bash
-
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# ./gen-all.sh <source_language> <directory>
-#
-# Document all projects in the specified directory.
-#
-# Projects are direct sub-directories of the specified directory.
-# Every project directory must contain a `.nx_config` file.
-# Also, every project must include the Doxygen XML output in its `doxygen/xml`
-# directory.
-
-for dir in "$2"/*; do
-       if [ -d "$dir" ]; then
-               if [ -f "$dir/.nx_config" ]; then
-                       # Note: gen-one.sh already prints errors.
-                       ./gen-one.sh "$1" "$dir" || exit
-               fi
-       fi
-done
diff --git a/contrib/neo_doxygen/gen-one.sh b/contrib/neo_doxygen/gen-one.sh
deleted file mode 100755 (executable)
index 2621c8d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/bash
-
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# ./gen-one.sh <source_language> <directory>
-#
-# Document the project in the specified directory.
-#
-# The project name is the basename of the specified directory.
-# The project directory must contain a `.nx_config` file.
-# Also, the directory must include the Doxygen XML output in its `doxygen/xml`
-# subdirectory.
-
-NEO_DOXYGEN="${PWD}/bin/neo_doxygen"
-NX="${PWD}/../../bin/nx"
-dir=$2
-
-. sh-lib/errors.sh
-
-echo "$0: Documenting \"${dir##*/}\"..."
-pushd "$dir"
-try "$NEO_DOXYGEN" --src-lang "$1" --dest http://localhost:7474 -- "${dir##*/}" "$dir/doxygen/xml"
-try echo "$0: [done] neo_doxygen"
-try "$NX" neo doc "${dir##*/}"
-try echo "$0: [done] nx"
-popd
diff --git a/contrib/neo_doxygen/package.ini b/contrib/neo_doxygen/package.ini
deleted file mode 100644 (file)
index 3abb23b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=neo_doxygen
-tags=devel,cli
-maintainer=Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
-license=Apache-2.0
-desc=neo_doxygen, a tool to convert a Doxygen XML output into a Neo4j model
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/neo_doxygen/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/neo_doxygen/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/contrib/neo_doxygen/sh-lib/README.md b/contrib/neo_doxygen/sh-lib/README.md
deleted file mode 100644 (file)
index ade333a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Libraries used by shell scripts.
diff --git a/contrib/neo_doxygen/sh-lib/errors.sh b/contrib/neo_doxygen/sh-lib/errors.sh
deleted file mode 100644 (file)
index dc5335b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /bin/bash
-
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Error handling.
-
-# The program’s name.
-prog_name=$0
-
-# Run the specified command and exit in case of error.
-function try {
-       "$@"
-       local status=$?
-       if [ $status -ne 0 ]; then
-               >&2 echo "${prog_name}: Error: \`$1\` failed with exit status ${status}."
-               trace
-               exit "$status"
-       fi
-       return 0
-}
-
-# Print the stack trace.
-function trace {
-       local frame=0
-       >&2 caller $frame
-       local has_next=$?
-       while [ $has_next = 0 ]; do
-               ((frame++));
-               >&2 caller $frame
-               has_next=$?
-       done
-       >&2 echo "---"
-       return 0
-}
diff --git a/contrib/neo_doxygen/sh-lib/more_sed.sh b/contrib/neo_doxygen/sh-lib/more_sed.sh
deleted file mode 100644 (file)
index db58b69..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Functions related to the `sed` utility.
-
-# Replace `$1` by `$2` in the specified files (the rest of the arguments).
-#
-# Replacements are done in place.
-#
-# SETS: `local_1`
-# SETS: `local_2`
-replace() {
-       local_1=`escape_to_bre "$1"`
-       local_2=`escape_to_bre "$2"`
-       shift 2
-       sed -s -i -e s."${local_1}"."${local_2}".g -- "$@"
-       unset local_1
-       unset local_2
-}
-
-# Escape `$1` for inclusion in a POSIX BRE.
-escape_to_bre() {
-       echo "$1" | sed -e 's/\*\|\.\|\^\|\$\|\[\|\\/\\\0/g'
-}
diff --git a/contrib/neo_doxygen/src/doxml/compounddef.nit b/contrib/neo_doxygen/src/doxml/compounddef.nit
deleted file mode 100644 (file)
index b1f7eaa..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# `compounddef` element reading.
-module doxml::compounddef
-
-import memberdef
-import doxyname
-import more_collections
-
-# Processes the content of a `compounddef` element.
-class CompoundDefListener
-       super EntityDefListener
-
-       # The defined compound.
-       var compound: Compound is writable, noinit
-
-       private var memberdef: MemberDefListener is noinit
-       private var param_listener: TypeParamListener is noinit
-
-       # Default attributes for members in the current section.
-       private var member_defaults: MemberDefaults is noinit
-
-       # For each section kind, default attributes for member in that section.
-       private var section_kinds: DefaultMap[String, MemberDefaults] is noinit
-
-
-       # Attributes of the current `<basecompoundref>` element.
-
-       private var refid = ""
-       private var prot = ""
-       private var virt = ""
-
-
-       init do
-               super
-               var defaults = new MemberDefaults("public", false, false)
-
-               memberdef = new MemberDefListener(reader, self)
-               param_listener = new TypeParamListener(reader, self)
-
-               member_defaults = defaults
-               section_kinds = new DefaultMap[String, MemberDefaults](defaults)
-
-               # public
-               section_kinds["public-type"] = defaults
-               section_kinds["public-func"] = defaults
-               section_kinds["public-attrib"] = defaults
-               section_kinds["public-slot"] = defaults
-               # public static
-               defaults = new MemberDefaults("public", true, false)
-               section_kinds["public-static-func"] = defaults
-               section_kinds["public-static-attrib"] = defaults
-               # Not scoped => public static
-               section_kinds["signal"] = defaults
-               section_kinds["dcop-func"] = defaults
-               section_kinds["property"] = defaults
-               section_kinds["event"] = defaults
-               section_kinds["define"] = defaults
-               section_kinds["typedef"] = defaults
-               section_kinds["enum"] = defaults
-               section_kinds["func"] = defaults
-               section_kinds["var"] = defaults
-
-               # protected
-               defaults = new MemberDefaults("protected", false, false)
-               section_kinds["protected-type"] = defaults
-               section_kinds["protected-func"] = defaults
-               section_kinds["protected-attrib"] = defaults
-               section_kinds["protected-slot"] = defaults
-               # protected static
-               defaults = new MemberDefaults("protected", true, false)
-               section_kinds["protected-static-func"] = defaults
-               section_kinds["protected-static-attrib"] = defaults
-
-               # package
-               defaults = new MemberDefaults("package", false, false)
-               section_kinds["package-type"] = defaults
-               section_kinds["package-func"] = defaults
-               section_kinds["package-attrib"] = defaults
-               # package static
-               defaults = new MemberDefaults("package", true, false)
-               section_kinds["package-static-func"] = defaults
-               section_kinds["package-static-attrib"] = defaults
-
-               # private
-               defaults = new MemberDefaults("private", false, false)
-               section_kinds["private-type"] = defaults
-               section_kinds["private-func"] = defaults
-               section_kinds["private-attrib"] = defaults
-               section_kinds["private-slot"] = defaults
-               # private static
-               defaults = new MemberDefaults("private", true, false)
-               section_kinds["private-static-func"] = defaults
-               section_kinds["private-static-attrib"] = defaults
-
-               # Special sections.
-               # TODO Do something these sections.
-               defaults = new MemberDefaults("public", true, true)
-               section_kinds["related"] = defaults
-               section_kinds["user-defined"] = defaults
-               # TODO Determine what `friend` and `prototype` mean.
-       end
-
-       redef fun entity: Entity do return compound
-
-       redef fun start_dox_element(local_name: String, atts: Attributes) do
-               if "compoundname" == local_name then
-                       text.listen_until(dox_uri, local_name)
-               else if ["innerclass", "innernamespace", "basecompoundref"].has(local_name) then
-                       prot = get_optional(atts, "prot", "")
-                       text.listen_until(dox_uri, local_name)
-                       if "basecompoundref" == local_name then
-                               refid = get_optional(atts, "refid", "")
-                               virt = get_optional(atts, "virt", "")
-                       else
-                               refid = get_required(atts, "refid")
-                       end
-               else if "memberdef" == local_name then
-                       read_member(atts)
-               else if "sectiondef" == local_name then
-                       member_defaults = section_kinds[get_required(atts, "kind")]
-                       if member_defaults.is_special then
-                               super # TODO
-                       end
-               else if "param" == local_name then
-                       param_listener.listen_until(dox_uri, local_name)
-               else if "templateparamlist" != local_name then
-                       super
-               end
-       end
-
-       redef fun end_dox_element(local_name: String) do
-               if "compoundname" == local_name then
-                       compound.doxyname = text.to_s
-               else if "innerclass" == local_name then
-                       compound.doxygen_declare_class(refid, text.to_s, prot)
-               else if "innernamespace" == local_name then
-                       compound.declare_namespace(refid, text.to_s)
-               else if "memberdef" == local_name then
-                       if not (memberdef.member isa UnknownMember) then
-                               compound.declare_member(memberdef.member)
-                       end
-               else if "basecompoundref" == local_name then
-                       compound.declare_super(refid, text.to_s, prot, virt)
-               else if "param" == local_name and compound isa ClassCompound then
-                       compound.as(ClassCompound).add_type_parameter(param_listener.parameter)
-               else
-                       super
-               end
-       end
-
-       private fun read_member(atts: Attributes) do
-               var kind = get_required(atts, "kind")
-
-               create_member(kind)
-               memberdef.member.model_id = get_required(atts, "id")
-               memberdef.member.visibility = get_optional(atts, "prot",
-                               member_defaults.visibility)
-       end
-
-       private fun create_member(kind: String) do
-               if kind == "variable" then
-                       memberdef.member = new Attribute(compound.graph)
-               else if kind == "function" then
-                       memberdef.member = new Method(compound.graph)
-               else
-                       memberdef.member = new UnknownMember(compound.graph)
-                       noop.listen_until(dox_uri, "memberdef")
-                       return
-               end
-               memberdef.listen_until(dox_uri, "memberdef")
-       end
-end
-
-# Default attributes for members in the current section.
-private class MemberDefaults
-       var visibility: String
-       var is_static: Bool
-       var is_special: Bool
-end
diff --git a/contrib/neo_doxygen/src/doxml/doc_listener.nit b/contrib/neo_doxygen/src/doxml/doc_listener.nit
deleted file mode 100644 (file)
index 05ecd35..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Documentation reading.
-module doxml::doc_listener
-
-import listener
-import html
-
-# Processes documentation.
-class DocListener
-       super TextListener
-
-       # The read documentation.
-       var doc = new Documentation is writable
-
-       # Mapping between the type of a Doxygen element and the corresponding
-       # factory.
-       private var factories = new HashMap[String, HtmlElementFactory]
-
-       private var element_stack = new Array[HTMLTag]
-
-       # Does the next block have to be added to the detailed description?
-       private var in_detailed_description = false
-
-       redef fun listen_until(uri, local_name) do
-               super
-               if local_name == "briefdescription" then
-                       in_detailed_description = false
-               else
-                       in_detailed_description = true
-               end
-       end
-
-       redef fun start_dox_element(local_name, atts) do
-               super
-               var factory = factories.get_or_null(local_name)
-               if factory == null then return
-               element_stack.push(factory.create_element(local_name, atts))
-       end
-
-       redef fun end_dox_element(local_name) do
-               super
-               if not factories.has_key(local_name) then return
-               if element_stack.is_empty then return
-               var current_element = element_stack.pop
-               current_element.append(flush_buffer.trim)
-               if element_stack.is_empty then add_block(current_element.write_to_string)
-       end
-
-       redef fun end_listening do
-               super
-               if not element_stack.is_empty then
-                       var current_element = element_stack.first.write_to_string
-                       add_block(current_element)
-               end
-               add_block(flush_buffer.trim)
-               element_stack.clear
-       end
-
-       private fun add_block(block: String) do
-               if block.is_empty then return
-               if in_detailed_description then
-                       doc.add(block)
-               else
-                       doc.brief_description = block
-                       in_detailed_description = true
-               end
-       end
-end
-
-# Provides a mean to create a certain kind of HTML elements.
-private abstract class HtmlElementFactory
-       # Create a new empty HTML element.
-       #
-       # Parameters:
-       #
-       # * `local_name`: Type of the Doxygen element that will be represented by
-       # the HTML element.
-       # * `attributes`: Attributes of the Doxygen element that will be
-       # represented by the HTML element.
-       fun create_element(local_name: String, attributes: Attributes): HTMLTag is abstract
-end
diff --git a/contrib/neo_doxygen/src/doxml/doxml.nit b/contrib/neo_doxygen/src/doxml/doxml.nit
deleted file mode 100644 (file)
index 280334a..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Doxygen’s XML documents reading.
-module doxml
-
-import compounddef
-
-# Reader for XML documents whose the schema is `compound.xsd`.
-class CompoundFileReader
-       super DoxmlListener
-
-       # The project graph.
-       var model: ProjectGraph
-
-       # The language-specific strategies to use.
-       redef var source_language: SourceLanguage
-
-       private var reader: XMLReader = new XophonReader
-       private var compounddef: CompoundDefListener is noinit
-       private var noop: NoopListener is noinit
-
-       init do
-               compounddef = new CompoundDefListener(reader, self)
-               noop = new NoopListener(reader, self)
-       end
-
-       redef fun graph do return model
-
-       # Read the document at the specified path.
-       fun read(path: String) do
-               reader.content_handler = self
-               reader.parse_file(path)
-               compounddef.compound = new UnknownCompound(model)
-       end
-
-       redef fun start_dox_element(local_name: String, atts: Attributes) do
-               if local_name == "compounddef" then
-                       read_compound(atts)
-               else if "doxygen" != local_name then
-                       noop.listen_until(dox_uri, local_name)
-               end
-       end
-
-       private fun read_compound(atts: Attributes) do
-               var kind = get_required(atts, "kind")
-
-               create_compound(kind)
-               # TODO Make all values of `kind` and `visibility` compatible with the Nit meta-model.
-               if get_bool(atts, "final") then
-                       kind = "final {kind}"
-               end
-               if get_bool(atts, "sealed") then
-                       kind = "sealed {kind}"
-               end
-               if get_bool(atts, "abstract") then
-                       kind = "abstract {kind}"
-               end
-               compounddef.compound.kind = kind
-               compounddef.compound.model_id = get_required(atts, "id")
-               compounddef.compound.visibility = get_optional(atts, "prot", "")
-       end
-
-       private fun create_compound(kind: String) do
-               if kind == "file" then
-                       compounddef.compound = new FileCompound(model)
-               else if kind == "namespace" then
-                       compounddef.compound = new Namespace(model)
-               else if kind == "class" or kind == "interface" or kind == "enum" then
-                       compounddef.compound = new ClassCompound(model)
-               else
-                       compounddef.compound = new UnknownCompound(model)
-                       noop.listen_until(dox_uri, "compounddef")
-                       return
-               end
-               compounddef.listen_until(dox_uri, "compounddef")
-       end
-end
diff --git a/contrib/neo_doxygen/src/doxml/doxyname.nit b/contrib/neo_doxygen/src/doxml/doxyname.nit
deleted file mode 100644 (file)
index 65637df..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Adds a methods to convert Doxygen’s names into short names.
-module doxml::doxyname
-
-import model
-
-redef class Compound
-
-       # Separator used by Doxygen to separate name’s components.
-       protected fun doxyname_separator: String do return "::"
-
-       # Set the `name` using the specified name generated by Doxygen.
-       fun doxyname=(doxyname: String) do
-               name = doxyname.to_short_name(doxyname_separator)
-       end
-
-       # Declare an inner class.
-       #
-       # Note: Althought Doxygen indicates that both arguments are optional,
-       # declarations with an empty ID are not supported yet.
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the inner class.
-       # * `doxyname`: qualified name of the inner class, as generated by Doxygen.
-       # * `prot`: visibility (proctection).
-       #
-       # TODO: Handle cases where only the `doxyname` is available.
-       fun doxygen_declare_class(id: String, doxyname: String, prot: String) do
-               declare_class(id, doxyname.to_short_name(doxyname_separator), prot)
-       end
-end
-
-redef class Namespace
-       # Set the `name` and the `full_name` using the specified name generated by Doxygen.
-       #
-       # Warning: This method assumes that `model_id` is already set.
-       redef fun doxyname=(doxyname: String) do
-               full_name = doxyname
-               super
-               if doxyname == name and model_id != "" then
-                       # Doxygen does not represent the root namespace.
-                       # So, we have to link the root namespace with its children manually.
-                       graph.by_id[""].as(Namespace).declare_namespace(model_id, doxyname)
-               end
-       end
-end
-
-redef class FileCompound
-       redef fun doxyname_separator do return "/"
-end
-
-redef class Text
-       # Return the substring that come after the last occurrence of `separator`.
-       #
-       # Return the whole string if `sperator` is not present.
-       private fun to_short_name(separator: String): SELFTYPE do
-               var m = search_last(separator)
-
-               if m == null then
-                       return self
-               else
-                       return substring_from(m.after)
-               end
-       end
-end
diff --git a/contrib/neo_doxygen/src/doxml/entitydef.nit b/contrib/neo_doxygen/src/doxml/entitydef.nit
deleted file mode 100644 (file)
index aa6968c..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Common SAX listeners for entity definitions.
-module doxml::entitydef
-
-import doc_listener
-
-# Processes the content of an entity definition.
-abstract class EntityDefListener
-       super StackableListener
-
-       # The inner `TextListener`.
-       protected var text: TextListener is noinit
-
-       # The inner `DocListener`.
-       protected var doc: DocListener is noinit
-
-       # The inner `NoopListener`.
-       protected var noop: NoopListener is noinit
-
-       init do
-               super
-               text = new TextListener(reader, self)
-               doc = new DocListener(reader, self)
-               noop = new NoopListener(reader, self)
-       end
-
-       # The current entity.
-       protected fun entity: Entity is abstract
-
-       redef fun start_dox_element(local_name, atts) do
-               if ["briefdescription", "detaileddescription", "inbodydescription"].has(local_name) then
-                       doc.doc = entity.doc
-                       doc.listen_until(dox_uri, local_name)
-               else if "location" == local_name then
-                       entity.location = get_location(atts)
-               else
-                       noop.listen_until(dox_uri, local_name)
-               end
-       end
-
-       redef fun end_listening do
-               super
-               entity.put_in_graph
-       end
-
-       # Parse the attributes of a `location` element.
-       protected fun get_location(atts: Attributes): neo_doxygen::Location do
-               var location = new neo_doxygen::Location
-
-               location.path = atts.value_ns("", "bodyfile") or else atts.value_ns("", "file")
-               # Doxygen may indicate `[generated]`.
-               if "[generated]" == location.path then location.path = null
-               var line_start = atts.value_ns("", "bodystart") or else atts.value_ns("", "line") or else null
-               if line_start != null then location.line_start = line_start.to_i
-               var line_end = atts.value_ns("", "bodyend")
-               if line_end != null then location.line_end = line_end.to_i
-               var column_start = atts.value_ns("", "column")
-               if column_start != null then location.column_start = column_start.to_i
-               if location.line_start == location.line_end then
-                       location.column_end = location.column_start
-               end
-               return location
-       end
-end
-
-# Processes the content of a `<param>` element.
-abstract class ParamListener[T: Parameter]
-       super EntityDefListener
-
-       # The current parameter.
-       var parameter: T is noinit
-
-       private var type_listener: TypeListener is noinit
-
-       init do
-               super
-               type_listener = new TypeListener(reader, self)
-       end
-
-       redef fun entity do return parameter
-
-       redef fun listen_until(uri, local_name) do
-               super
-               parameter = create_parameter
-       end
-
-       # Create a new parameter.
-       protected fun create_parameter: T is abstract
-
-       redef fun start_dox_element(local_name, atts) do
-               if "declname" == local_name then
-                       text.listen_until(dox_uri, local_name)
-               else if "type" == local_name then
-                       type_listener.listen_until(dox_uri, local_name)
-               else
-                       super
-               end
-       end
-
-       redef fun end_dox_element(local_name) do
-               if "declname" == local_name then
-                       parameter.name = text.to_s
-               else if "type" == local_name then
-                       source_language.apply_parameter_type(parameter, type_listener.linked_text)
-               else
-                       super
-               end
-       end
-end
-
-# Processes the content of a `<param>` element in a `<templateparamlist>` element.
-class TypeParamListener
-       super ParamListener[TypeParameter]
-
-       redef fun create_parameter do return new TypeParameter(graph)
-end
diff --git a/contrib/neo_doxygen/src/doxml/language_specific.nit b/contrib/neo_doxygen/src/doxml/language_specific.nit
deleted file mode 100644 (file)
index 9566f9e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Handle language-specific parts of the importation.
-module doxml::language_specific
-
-import model
-
-# Various importation logics that depend on the project’s language.
-abstract class SourceLanguage
-
-       # Apply the information deduced from `type_text` to `member`.
-       #
-       # `type_text` is the content of the `<type>` element.
-       fun apply_member_type(member: Member, type_text: RawType) do
-               if type_text["text"] != null then
-                       member.static_type = type_text
-               end
-       end
-
-       # Apply the information deduced from `type_text` to `parameter`.
-       #
-       # `type_text` is the content of the `<type>` element.
-       fun apply_parameter_type(parameter: Parameter, type_text: RawType) do
-               if type_text["text"] != null then
-                       parameter.static_type = type_text
-               end
-       end
-
-       # Extract the specified keyword at the beginning of the specified text.
-       #
-       # If the keyword is at the beginning of the specified text, return `true`
-       # and remove the keyword. Else, return false.
-       #
-       # Used to extract some keywords that Doxygen puts in the type.
-       #
-       #     class DummySource
-       #       super JavaSource
-       #     #
-       #       fun test(text: LinkedText, keyword: String): Bool do
-       #               return extract_keyword(text, keyword)
-       #       end
-       #     end
-       #     #
-       #     var text = new RawType(new ProjectGraph(""))
-       #     var dummy = new DummySource
-       #     var res: Bool
-       #     #
-       #     text.add_part("abstract final", "")
-       #     res = dummy.test(text, "static")
-       #     assert not res
-       #     res = dummy.test(text, "abstract")
-       #     assert res
-       #     assert "final" == text["text"].as(JsonArray).first
-       #     res = dummy.test(text, "final")
-       #     assert res
-       #     assert text["text"] == null
-       #     res = dummy.test(text, "abstract")
-       #     assert not res
-       protected fun extract_keyword(text: LinkedText, keyword: String): Bool do
-               var text_array = text["text"]
-               if text_array == null then return false
-               assert text_array isa JsonArray
-               if text_array.is_empty then return false
-
-               var content = text_array.first.as(String).l_trim
-               var link = text.links.first
-               var found = false
-
-               if link == null and content.has_prefix(keyword) then
-                       if keyword.length == content.length then
-                               content = ""
-                               found = true
-                       else if content.chars[keyword.length] <= ' ' then
-                               content = content.substring_from(keyword.length).l_trim
-                               found = true
-                       end
-                       if "" == content then
-                               text.shift_part
-                       else if found then
-                               text.set_part(0, content, "")
-                       end
-               end
-               return found
-       end
-
-       # Extract the specified suffix in the specified text.
-       #
-       # If the suffix is at the end of the specified text, return `true`
-       # and remove the suffix. Else, return false.
-       #
-       # Used to extract stuff like `...` that Doxygen puts in the type.
-       #
-       #     class DummySource
-       #       super JavaSource
-       #     #
-       #       fun test(text: LinkedText, s: String): Bool do
-       #               return extract_suffix(text, s)
-       #       end
-       #     end
-       #     #
-       #     var text = new RawType(new ProjectGraph(""))
-       #     var dummy = new DummySource
-       #     var res: Bool
-       #     #
-       #     text.add_part("Object...+++", "")
-       #     res = dummy.test(text, "...")
-       #     assert not res
-       #     res = dummy.test(text, "+++")
-       #     assert res
-       #     assert "Object..." == text["text"].as(JsonArray).first
-       #     res = dummy.test(text, "...")
-       #     assert res
-       #     assert "Object" == text["text"].as(JsonArray).first
-       protected fun extract_suffix(text: LinkedText, suffix: String): Bool do
-               var text_array = text["text"]
-               if text_array == null then return false
-               assert text_array isa JsonArray
-               if text_array.is_empty then return false
-
-               var content = text_array.last.as(String).r_trim
-               var link = text.links.first
-
-               if link == null and content.has_suffix(suffix) then
-                       content = content.substring(0, content.length - suffix.length).r_trim
-                       if "" == content then
-                               text.pop_part
-                       else
-                               text.set_part(0, content, "")
-                       end
-                       return true
-               else
-                       return false
-               end
-       end
-end
-
-# The default importation logics.
-#
-# Do nothing special.
-class DefaultSource
-       super SourceLanguage
-end
-
-# Importation logics for Java.
-class JavaSource
-       super SourceLanguage
-
-       redef fun apply_member_type(member, type_text) do
-               # For abstract members, Doxygen put `abstract` at the beginning of the type.
-               # We assume that Doxygen do not put annotations in the type (it seems to
-               # be the case).
-               if extract_keyword(type_text, "abstract") then
-                       member.is_abstract = true
-               end
-               # TODO final
-               # TODO void
-               # TODO Avoid using `RawType` when possible. Only use `RawType` as a fallback.
-               super
-       end
-
-       redef fun apply_parameter_type(parmeter, type_text) do
-               # We assume that Doxygen do not put annotations in the type (it seems to
-               # be the case).
-               # TODO final
-               # TODO Avoid using `RawType` when possible. Only use `RawType` as a fallback.
-               parmeter.is_vararg = extract_suffix(type_text, "...")
-               super
-       end
-end
-
-# Importation logics for Python.
-class PythonSource
-       super SourceLanguage
-
-       redef fun apply_member_type(member, type_text) do
-               # Doxygen may forgot to remove the `def` keyword on methods.
-               extract_keyword(type_text, "def")
-               super
-       end
-end
diff --git a/contrib/neo_doxygen/src/doxml/listener.nit b/contrib/neo_doxygen/src/doxml/listener.nit
deleted file mode 100644 (file)
index 40d021f..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Basic SAX listeners.
-module doxml::listener
-
-import saxophonit
-import model
-import language_specific
-
-# Common abstractions for SAX listeners reading XML documents generated by Doxygen.
-abstract class DoxmlListener
-       super ContentHandler
-
-       # The locator setted by calling `document_locator=`.
-       protected var locator: nullable SAXLocator = null
-
-       # The project graph.
-       fun graph: ProjectGraph is abstract
-
-       # The language-specific strategies to use.
-       fun source_language: SourceLanguage is abstract
-
-       redef fun document_locator=(locator: SAXLocator) do
-               self.locator = locator
-       end
-
-       # The Doxygen’s namespace IRI.
-       protected fun dox_uri: String do return ""
-
-       redef fun start_element(uri: String, local_name: String, qname: String,
-                       atts: Attributes) do
-               super
-               if uri != dox_uri then return # None of our business.
-               start_dox_element(local_name, atts)
-       end
-
-       # Process the start of an element in the Doxygen’s namespace.
-       #
-       # See `ContentHandler.start_element` for the description of the parameters.
-       protected fun start_dox_element(local_name: String, atts: Attributes) do end
-
-       redef fun end_element(uri: String, local_name: String, qname: String) do
-               super
-               if uri != dox_uri then return # None of our business.
-               end_dox_element(local_name)
-       end
-
-       # Process the end of an element in the Doxygen’s namespace.
-       #
-       # See `ContentHandler.start_element` for the description of the parameters.
-       protected fun end_dox_element(local_name: String) do end
-
-       # Get the boolean value of the specified attribute.
-       #
-       # `false` by default.
-       protected fun get_bool(atts: Attributes, local_name: String): Bool do
-               return get_optional(atts, local_name, "no") == "yes"
-       end
-
-       # Get the value of an optional attribute.
-       #
-       # Parameters:
-       #
-       # * `atts`: attribute list.
-       # * `local_name`: local name of the attribute.
-       # * `default`: value to return when the specified attribute is not found.
-       protected fun get_optional(atts: Attributes, local_name: String,
-                       default: String): String do
-               return atts.value_ns(dox_uri, local_name) or else default
-       end
-
-       # Get the value of an required attribute.
-       #
-       # Parameters:
-       #
-       # * `atts`: attribute list.
-       # * `local_name`: local name of the attribute.
-       protected fun get_required(atts: Attributes, local_name: String): String do
-               var value = atts.value_ns(dox_uri, local_name)
-               if value == null then
-                       throw_error("The `{local_name}` attribute is required.")
-                       return ""
-               else
-                       return value
-               end
-       end
-
-       redef fun end_document do
-               locator = null
-       end
-
-       # Throw an error with the specified message by prepending the current location.
-       protected fun throw_error(message: String) do
-               var e: SAXParseException
-
-               if locator != null then
-                       e = new SAXParseException.with_locator(message, locator.as(not null))
-               else
-                       e = new SAXParseException(message)
-               end
-               e.throw
-       end
-end
-
-# A `DoxmlListener` that read only a part of a document.
-#
-# Temporary redirect events to itself until it ends processing its part.
-abstract class StackableListener
-       super DoxmlListener
-
-       # The associated reader.
-       var reader: XMLReader
-
-       # The parent listener.
-       var parent: DoxmlListener
-
-       # Namespace’s IRI of the element at the root of the part to process.
-       private var root_uri: String = ""
-
-       # Local name of the element at the root of the part to process.
-       private var root_local_name: String = ""
-
-       # The number of open element of the same type than the root of the part to process.
-       private var depth = 0
-
-       # The project graph.
-       private var p_graph: ProjectGraph is noinit
-
-       # The language-specific strategies to use.
-       private var p_source: SourceLanguage is noinit
-
-
-       init do
-               super
-               p_graph = parent.graph
-               p_source = parent.source_language
-       end
-
-       redef fun graph do return p_graph
-       redef fun source_language do return p_source
-
-       # Temporary redirect events to itself until the end of the specified element.
-       fun listen_until(uri: String, local_name: String) do
-               root_uri = uri
-               root_local_name = local_name
-               depth = 1
-               reader.content_handler = self
-               locator = parent.locator
-       end
-
-       redef fun start_element(uri: String, local_name: String, qname: String,
-                       atts: Attributes) do
-               super
-               if uri == root_uri and local_name == root_local_name then
-                       depth += 1
-               end
-       end
-
-       redef fun end_element(uri: String, local_name: String, qname: String) do
-               super
-               if uri == root_uri and local_name == root_local_name then
-                       depth -= 1
-                       if depth <= 0 then
-                               end_listening
-                               parent.end_element(uri, local_name, qname)
-                       end
-               end
-       end
-
-       # Reset the reader’s listener to the parent.
-       fun end_listening do
-               reader.content_handler = parent
-               locator = null
-       end
-
-       redef fun end_document do
-               end_listening
-       end
-end
-
-# A SAX listener that skips any event except the end of the part to process.
-#
-# Used to skip an entire element.
-class NoopListener
-       super StackableListener
-end
-
-# Concatenates any text node found.
-class TextListener
-       super StackableListener
-
-       # The read text.
-       protected var buffer: Buffer = new FlatBuffer
-
-       # Is the last read chunk was ignorable white space?
-       private var sp: Bool = false
-
-       redef fun listen_until(uri: String, local_name: String) do
-               buffer.clear
-               sp = false
-               super
-       end
-
-       redef fun characters(str: String) do
-               if sp then
-                       if buffer.length > 0 then buffer.append(" ")
-                       sp = false
-               end
-               buffer.append(str)
-       end
-
-       redef fun ignorable_whitespace(str: String) do
-               sp = true
-       end
-
-       # Flush the buffer.
-       protected fun flush_buffer: String do
-               var s = buffer.to_s
-
-               buffer.clear
-               sp = false
-               return s
-       end
-
-       redef fun to_s do return buffer.to_s
-end
-
-# Processes a content of type `linkedTextType`.
-abstract class LinkedTextListener[T: LinkedText]
-       super TextListener
-
-       # The read text.
-       var linked_text: T is noinit
-
-       private var refid = ""
-
-       # Create a new instance of `T`.
-       protected fun create_linked_text: T is abstract
-
-       redef fun listen_until(uri: String, local_name: String) do
-               linked_text = create_linked_text
-               refid = ""
-               super
-       end
-
-       redef fun start_dox_element(local_name: String, atts: Attributes) do
-               super
-               push_part
-               if "ref" == local_name then refid = get_required(atts, "refid")
-       end
-
-       redef fun end_dox_element(local_name: String) do
-               super
-               push_part
-               if "ref" == local_name then refid = ""
-       end
-
-       private fun push_part do
-               var s = flush_buffer
-
-               if not s.is_empty then
-                       linked_text.add_part(s, refid)
-               end
-       end
-
-       redef fun to_s do return linked_text.to_s
-end
-
-# Processes the content of a `<type>` element.
-class TypeListener
-       super LinkedTextListener[RawType]
-
-       private var raw_type: RawType is noinit
-
-       redef fun create_linked_text do return new RawType(graph)
-end
diff --git a/contrib/neo_doxygen/src/doxml/memberdef.nit b/contrib/neo_doxygen/src/doxml/memberdef.nit
deleted file mode 100644 (file)
index 5249404..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# `memberdef` element reading.
-module doxml::memberdef
-
-import entitydef
-
-# Processes the content of a `<memberdef>` element.
-class MemberDefListener
-       super EntityDefListener
-
-       # The current member.
-       var member: Member is writable, noinit
-
-       private var type_listener: TypeListener is noinit
-       private var param_listener: MemberParamListener is noinit
-
-       init do
-               super
-               type_listener = new TypeListener(reader, self)
-               param_listener = new MemberParamListener(reader, self)
-       end
-
-       redef fun entity do return member
-
-       redef fun start_dox_element(local_name: String, atts: Attributes) do
-               if "name" == local_name then
-                       text.listen_until(dox_uri, local_name)
-               else if "reimplements" == local_name then
-                       member.reimplement(get_required(atts, "refid"))
-               else if "type" == local_name then
-                       type_listener.listen_until(dox_uri, local_name)
-               else if "param" == local_name then
-                       param_listener.listen_until(dox_uri, local_name)
-               else
-                       super
-               end
-       end
-
-       redef fun end_dox_element(local_name: String) do
-               if "name" == local_name then
-                       member.name = text.to_s
-               else if "type" == local_name then
-                       source_language.apply_member_type(member, type_listener.linked_text)
-               else if "param" == local_name then
-                       member.add_parameter(param_listener.parameter)
-               else
-                       super
-               end
-       end
-end
-
-# Processes the content of a `<param>` element in a `<memberdef>` element.
-class MemberParamListener
-       super ParamListener[MemberParameter]
-
-       redef fun create_parameter do return new MemberParameter(graph)
-end
diff --git a/contrib/neo_doxygen/src/graph_store.nit b/contrib/neo_doxygen/src/graph_store.nit
deleted file mode 100644 (file)
index 0c396d3..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A storage medium for a graph.
-module graph_store
-
-import neo4j
-import console
-
-# A storage medium for a graph.
-#
-# Provides a way to save a Neo4j graph.
-abstract class GraphStore
-
-       # Escape control sequence to save the cursor position.
-       private var term_save_cursor: String = (new TermSaveCursor).to_s
-
-       # Escape control sequence to rewind to the last saved cursor position.
-       private var term_rewind: String = "{new TermRestoreCursor}{new TermEraseDisplayDown}"
-
-       # Is the storage medium already contains at least one node with the specified label?
-       fun has_node_label(name: String): Bool is abstract
-
-       # Save all specified Neo4j entities.
-       fun save_all(neo_entities: Collection[NeoEntity]) is abstract
-
-       # Prepare the output to show the progress.
-       #
-       # This method must be called before the first call to `show_progress` or
-       # `show_done`.
-       protected fun prepare_display do printn "{term_save_cursor} "
-
-       # Show the progress, in percentage.
-       #
-       # For use in the implementation of `save_all` only.
-       protected fun show_progress(progress: Int) do
-               printn "{term_rewind} {progress}% "
-       end
-
-       # Show a message to indicate that the task finished with success.
-       #
-       # For use in the implementation of `save_all` only.
-       protected fun show_done do
-               print "{term_rewind} Done."
-       end
-end
-
-# An actual Neo4j database as a storage medium.
-class Neo4jStore
-       super GraphStore
-
-       # How many operations can be executed in one batch?
-       private var batch_max_size = 1000
-
-       # The Neo4j client to use.
-       var client: Neo4jClient
-
-       redef fun has_node_label(name) do
-               var query = new CypherQuery.from_string(
-                               "match n where \{name\} in labels(n) return count(n)")
-               query.params["name"] = name
-               var data = client.cypher(query).as(JsonObject)["data"]
-               var result = data.as(JsonArray).first.as(JsonArray).first.as(Int)
-               return result > 0
-       end
-
-       redef fun save_all(neo_entities) do
-               var batch = new NeoBatch(client)
-               var len = neo_entities.length
-               var sum = 0
-               var i = 1
-
-               prepare_display
-               for nentity in neo_entities do
-                       batch.save_entity(nentity)
-                       if i == batch_max_size then
-                               do_batch(batch)
-                               sum += batch_max_size
-                               show_progress(sum * 100 / len)
-                               batch = new NeoBatch(client)
-                               i = 1
-                       else
-                               i += 1
-                       end
-               end
-               do_batch(batch)
-               show_done
-       end
-
-       # Execute `batch` and check for errors.
-       #
-       # Abort if `batch.execute` returns errors.
-       private fun do_batch(batch: NeoBatch) do
-               var errors = batch.execute
-               if not errors.is_empty then
-                       for e in errors do sys.stderr.write("{sys.program_name}: {e}\n")
-                       exit(1)
-               end
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/class_compound.nit b/contrib/neo_doxygen/src/model/class_compound.nit
deleted file mode 100644 (file)
index b0f2096..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Nodes for classes.
-module model::class_compound
-
-import graph
-import member
-import type_entity
-
-# A class.
-class ClassCompound
-       super Compound
-
-       # The corresponding type.
-       #
-       # In the case of a generic class, defines bounds for type parameters.
-       var class_type: ClassType is noinit
-
-       # The definition.
-       var class_def: ClassDef is noinit
-
-       init do
-               super
-               class_type = new ClassType(graph)
-               class_type.class_compound = self
-               class_def = new ClassDef(graph, self)
-               self.labels.add("MClass")
-               kind = "class"
-               visibility = "public"
-       end
-
-       # Return the number of type parameters.
-       fun arity: Int do return class_type.arity
-
-       redef fun name=(name) do
-               super
-               class_type.name = name
-               class_def.name = name
-       end
-
-       redef fun location=(location) do
-               super
-               class_def.location = location
-       end
-
-       redef fun set_mdoc do
-               super
-               class_def["mdoc"] = doc
-       end
-
-       redef fun declare_super(id, full_name, prot, virt) do
-               class_def.declare_super(id, full_name, prot, virt)
-       end
-
-       redef fun declare_member(member) do
-               class_def.declare_member(member)
-       end
-
-       # Append the specified type parameter.
-       fun add_type_parameter(parameter: TypeParameter) do
-               class_type.arguments.add(parameter)
-       end
-
-       redef fun put_in_graph do
-               super
-               class_type.put_in_graph
-               class_def.put_in_graph
-       end
-
-       redef fun put_edges do
-               super
-               graph.add_edge(self, "CLASSTYPE", class_type)
-               if arity > 0 then
-                       var names = new JsonArray
-
-                       for p in class_type.arguments do
-                               names.add(p.name)
-                       end
-                       self["parameter_names"] = names
-               end
-       end
-end
-
-# The `MClassDef` node of a class.
-class ClassDef
-       super CodeBlock
-
-       # The defined class.
-       var class_compound: ClassCompound
-
-       # The `model_id` of the base classes.
-       var supers: SimpleCollection[String] = new Array[String]
-
-       # The set of the introduced/redefined members.
-       #
-       # Includes inner classes.
-       #
-       # Filled by `declare_member` and `declare_class`.
-       #
-       # Note: `declare_class` is defined by the `inner_class` module.
-       #
-       # SEE: `declare_member`
-       # SEE: `declare_class`
-       var members: SimpleCollection[MemberOrInner] = new Array[MemberOrInner]
-
-       init do
-               super
-               self.labels.add("MClassDef")
-               self["is_intro"] = true
-       end
-
-       # Declare a base compound (usually, a base class).
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the base compound. May be empty.
-       # * `full_name`: qualified name of the base compound. May be empty.
-       # * `prot`: visibility (proctection) of the relationship.
-       # * `virt`: level of virtuality of the relationship.
-       fun declare_super(id: String, full_name: String, prot: String,
-                       virt: String) do
-               # TODO prot, virt, full_name
-               if "" != id then
-                       supers.add(id)
-               end
-       end
-
-       # Append the specified member.
-       fun declare_member(member: Member) do
-               members.add(member)
-       end
-
-       redef fun put_edges do
-               super
-               graph.add_edge(self, "BOUNDTYPE", class_compound.class_type)
-               graph.add_edge(self, "MCLASS", class_compound)
-               for s in supers do
-                       graph.add_edge(self, "INHERITS", graph.by_id[s].as(ClassCompound).class_type)
-               end
-               for m in members do
-                       if m.is_intro then
-                               var intro = m.introducer.as(not null)
-                               graph.add_edge(self, "INTRODUCES", intro)
-                               graph.add_edge(intro, "INTRO_CLASSDEF", self)
-                       end
-                       graph.add_edge(self, "DECLARES", m)
-               end
-       end
-end
-
-# A type defined by a class.
-class ClassType
-       super TypeEntity
-
-       # The associated class.
-       #
-       # You may use this attribute or `class_compound_id` to specify the class.
-       var class_compound: nullable ClassCompound = null is writable
-
-       # The `model_id` of the associated class.
-       #
-       # You may use this attribute or `class_compound` to specify the class.
-       var class_compound_id: String = "" is writable
-
-       # The type arguments or the type parameters.
-       var arguments = new Array[TypeEntity]
-
-       init do
-               super
-               self.labels.add("MClassType")
-       end
-
-       # Return the number of arguments.
-       fun arity: Int do return arguments.length
-
-       # Is the class generic?
-       fun is_generic: Bool do return arity > 0
-
-       redef fun put_in_graph do
-               super
-               if is_generic then
-                       self.labels.add("MGenericType")
-               else
-                       var i = self.labels.index_of("MGenericType")
-                       if i >= 0 then self.labels.remove_at(i)
-               end
-       end
-
-       redef fun put_edges do
-               var cls = class_compound
-
-               if cls == null and class_compound_id != "" then
-                       cls = graph.by_id[class_compound_id].as(ClassCompound)
-               end
-               assert cls != null
-
-               super
-               graph.add_edge(self, "CLASS", cls)
-               assert cls.arity == self.arity
-               for i in [0..arguments.length[ do
-                       var a = arguments[i]
-                       if cls.class_type != self then
-                               a.name = cls.class_type.arguments[i].name
-                       end
-                       if a isa TypeParameter then
-                               a.rank = i
-                               graph.add_edge(a, "CLASS", cls)
-                       end
-                       graph.add_edge(self, "ARGUMENT", a)
-               end
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/descriptions.nit b/contrib/neo_doxygen/src/model/descriptions.nit
deleted file mode 100644 (file)
index 66341f3..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Documentation associated to an entity.
-module model::descriptions
-
-import json::static
-import json
-
-# Documentation associated to an entity.
-#
-# The documentation is written in Markdown format.
-#
-# ~~~nit
-# var doc = new Documentation
-#
-# doc.brief_description = "Do something."
-# doc.detailed_description = ["Do not lunch a rocket."]
-# assert doc.brief_description == "Do something."
-# assert doc.detailed_description == ["Do not lunch a rocket."]
-# assert doc.to_json == """["Do something.","Do not lunch a rocket."]"""
-#
-# doc.brief_description = ""
-# doc.detailed_description = ["The answer is `42`."]
-# assert doc.brief_description == "The answer is `42`."
-# assert doc.detailed_description == ["The answer is `42`."]
-# assert doc.to_json == """["The answer is `42`."]"""
-#
-# doc.detailed_description = ["The answer is `42`."]
-# doc.brief_description = ""
-# assert doc.brief_description == "The answer is `42`."
-# assert doc.detailed_description == ["The answer is `42`."]
-# assert doc.to_json == """["The answer is `42`."]"""
-#
-# doc.detailed_description = new Array[String]
-# doc.brief_description = ""
-# assert doc.is_empty
-# assert doc.brief_description == ""
-# assert doc.detailed_description == new Array[String]
-# assert doc.to_json == "[]"
-# ~~~
-class Documentation
-       super Serializable
-
-       private var content = new JsonStringArray
-       private var has_brief_description: Bool = false
-
-       # The brief description.
-       #
-       # If it is empty, the first element of `detailed_description` will be used
-       # as brief description.
-       fun brief_description=(brief_description: String) do
-               if brief_description.is_empty then
-                       if has_brief_description then
-                               content.shift
-                               has_brief_description = false
-                       end
-               else if has_brief_description then
-                       content.first = brief_description
-               else
-                       content.unshift(brief_description)
-                       has_brief_description = true
-               end
-       end
-
-       # The brief description.
-       fun brief_description: String do
-               if not is_empty then return content.first
-               return ""
-       end
-
-       # The detailed description.
-       #
-       # Each element should represent a block.
-       fun detailed_description=(detailed_description: SequenceRead[String]) do
-               if has_brief_description then
-                       while content.length > 1 do content.pop
-               else
-                       content.clear
-               end
-               content.add_all(detailed_description)
-       end
-
-       # The detailed description.
-       #
-       # Each element should represent a block.
-       fun detailed_description: SequenceRead[String] do
-               if not has_brief_description then return content
-               if content.length > 1 then return content.subarray(1, content.length - 1)
-               return new Array[String]
-       end
-
-       # Add a block of detailed description.
-       fun add(block: String) do content.add block
-
-       # Is the documentation empty?
-       fun is_empty: Bool do return content.is_empty
-
-       redef fun serialize_to(v) do content.serialize_to v
-       redef fun accept_json_serializer(v) do content.serialize_to v
-end
-
-# A `Serializable` array of strings.
-private class JsonStringArray
-       super JsonSequenceRead[String]
-       super Array[String]
-end
diff --git a/contrib/neo_doxygen/src/model/graph.nit b/contrib/neo_doxygen/src/model/graph.nit
deleted file mode 100644 (file)
index 9df491a..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Graphs and basic entities.
-module model::graph
-
-import neo4j
-import more_collections
-import location
-import descriptions
-
-# A Neo4j graph.
-class NeoGraph
-       # All the nodes in the graph.
-       var all_nodes: SimpleCollection[NeoNode] = new Array[NeoNode]
-
-       # All the edges in the graph.
-       var all_edges: SimpleCollection[NeoEdge] = new Array[NeoEdge]
-
-       # Add a relationship between two nodes.
-       #
-       # Parameters are the same than for the constructor of `NeoEdge`.
-       fun add_edge(from: NeoNode, rel_type: String, to: NeoNode) do
-               all_edges.add(new NeoEdge(from, rel_type, to))
-       end
-end
-
-# A project’s graph.
-#
-# Here is the usual steps to build a project graph:
-#
-# <ul>
-# <li>Instantiate `ProjectGraph` by giving the name that will label the project.</li>
-# <li>For each compound:
-# <ul>
-# <li>Instantiate the compound.</li>
-# <li>Provide all the related data.</li>
-# <li>Call the `put_in_graph` method of the compound.</li>
-# </ul></li>
-# <li>Call the `add_global_modules` method of the project’s graph (defined in
-# the `module_compound` module). This permits to take global classes into
-# account correctly.</li>
-# <li>Call the `put_edges` method of the project’s graph.</li>
-# </ul>
-class ProjectGraph
-       super NeoGraph
-
-       # The project’s name.
-       var project_name: String
-
-       # The node reperesenting the project.
-       #
-       # Once the project’s graph is initialized, this node must not be edited.
-       var project = new NeoNode
-
-       # Entities by `model_id`.
-       var by_id: Map[String, Entity] = new HashMap[String, Entity]
-
-       # Namespaces by `full_name`.
-       var namespaces: Map[String, Namespace] = new HashMap[String, Namespace]
-
-       # For each `ClassCompound` in the graph, the mapping between its `model_id` and its namespace.
-       #
-       # Defaults to the root namespace. An entry is added each time
-       # `Namespace.declare_class` is called.
-       #
-       # Note: In the graph, there is no direct link between a namespace and a
-       # class. It is the role of a module (created internally by a `FileCompound`)
-       # to link a class with its namespace. So, this collection is used by modules
-       # to know which class in a file belong to their related namespace. It is
-       # also used by `FileCompound` to detect classes in the root namespace.
-       var class_to_ns: Map[String, Namespace] is noinit
-
-       # Initialize a new project graph using the specified project name.
-       #
-       # The specified name will label all nodes of the project’s graph.
-       init do
-               project.labels.add(project_name)
-               project.labels.add("MEntity")
-               project.labels.add("MProject")
-               project["name"] = project_name
-               all_nodes.add(project)
-
-               var root = new RootNamespace(self)
-               root.put_in_graph
-               by_id[""] = root
-               class_to_ns = new DefaultMap[String, Namespace](root)
-       end
-
-       # Request to all nodes in the graph to add their related edges.
-       #
-       # Note: For the rare cases where a node need to wait the `put_edges` to add
-       # an implicit node, this method makes sure to call the `put_edges` method
-       # of the newly added nodes only after processing all the nodes that was
-       # already there.
-       fun put_edges do
-               all_edges.clear
-               add_edge(project, "ROOT", by_id[""])
-               for n in all_nodes do
-                       if n isa Entity then
-                               n.put_edges
-                       end
-               end
-       end
-end
-
-# A model’s entity.
-#
-# In practice, this is the base class of every node in a `ProjectGraph`.
-abstract class Entity
-       super NeoNode
-
-       # Graph that will embed the entity.
-       var graph: ProjectGraph
-
-       # ID of the entity in the model.
-       #
-       # Is empty for entities without an ID.
-       var model_id: String = "" is writable
-
-       # The full (qualified) name, as presented by the original model.
-       #
-       # Fully independant of `name`. By default, equals to `""` for the root
-       # namespace.
-       var full_name: nullable String = null is writable
-
-       # Associated documentation.
-       var doc = new Documentation is writable
-
-       init do
-               self.labels.add(graph.project_name)
-               self.labels.add("MEntity")
-       end
-
-       # The short (unqualified) name.
-       fun name=(name: String) do
-               self["name"] = name
-       end
-
-       # The short (unqualified) name.
-       fun name: String do
-               var name = self["name"]
-               assert name isa String
-               return name
-       end
-
-       # Include the documentation of `self` in the graph.
-       protected fun set_mdoc do
-               self["mdoc"] = doc
-       end
-
-       # The namespace separator of Nit/C++.
-       #
-       # Used to join two or more names when we need to work around some
-       # limitations of the Nit model.
-       fun ns_separator: String do return "::"
-
-       # Set the location of the entity in the source code.
-       fun location=(location: nullable neo_doxygen::Location) do
-               self["location"] = location
-       end
-
-       # Get the location of the entity in the source code.
-       fun location: nullable neo_doxygen::Location do
-               return self["location"].as(nullable neo_doxygen::Location)
-       end
-
-       # Put the entity in the graph.
-       #
-       # Called by the loader when it has finished to read the entity.
-       fun put_in_graph do
-               if not doc.is_empty then
-                       set_mdoc
-               end
-               graph.all_nodes.add(self)
-               if model_id != "" then graph.by_id[model_id] = self
-       end
-
-       # Put the related edges in the graph.
-       #
-       # This method is called on each node by `ProjectGraph.put_edges`.
-       #
-       # Note: Even at this step, the entity may modify its own attributes and
-       # inner entities’ ones because some values are only known once the entity
-       # know its relationships with the rest of the graph.
-       fun put_edges do end
-end
-
-# An entity whose the location is mandatory.
-abstract class CodeBlock
-       super Entity
-
-       init do
-               self["location"] = new neo_doxygen::Location
-       end
-
-       redef fun location=(location) do
-               if location == null then
-                       super(new neo_doxygen::Location)
-               else
-                       super
-               end
-       end
-end
-
-# A compound.
-#
-# Usually corresponds to a `<compounddef>` element in of the XML output of
-# Doxygen.
-abstract class Compound
-       super Entity
-
-       # Set the declared visibility (the protection) of the compound.
-       fun visibility=(visibility: String) do
-               self["visibility"] = visibility
-       end
-
-       # Set the specific kind of the compound.
-       fun kind=(kind: String) do
-               self["kind"] = kind
-       end
-
-       # Declare an inner namespace.
-       #
-       # Note: Although Doxygen indicates that the name is optional,
-       # declarations with an empty name are not supported yet, except for the root
-       # namespace. For the root namespace, both arguments are empty.
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the inner namespace. May be empty.
-       # * `full_name`: qualified name of the inner namespace. Use an empty name
-       # for the root namespace.
-       fun declare_namespace(id: String, full_name: String) do end
-
-       # Declare an inner class.
-       #
-       # Note: Although Doxygen indicates that both arguments are optional,
-       # declarations with an empty ID are not supported yet.
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the inner class.
-       # * `name`: short name of the inner class.
-       # * `prot`: visibility (proctection).
-       fun declare_class(id: String, name: String, prot: String) do end
-
-       # Declare a base compound (usually, a base class).
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the base compound. May be empty.
-       # * `full_name`: qualified name of the base compound. May be empty.
-       # * `prot`: visibility (proctection) of the relationship.
-       # * `virt`: level of virtuality of the relationship.
-       fun declare_super(id: String, full_name: String, prot: String,
-                       virt: String) do end
-end
-
-# An unrecognized compound.
-#
-# Used to simplify the handling of ignored entities.
-class UnknownCompound
-       super Compound
-
-       redef fun put_in_graph do end
-       redef fun put_edges do end
-end
-
-# A namespace.
-#
-# Corresponds to a group in Nit.
-class Namespace
-       super Compound
-
-       # The inner namespaces.
-       var inner_namespaces: SimpleCollection[NamespaceRef] = new Array[NamespaceRef]
-
-       init do
-               super
-               self.labels.add("MGroup")
-       end
-
-       redef fun declare_namespace(id, full_name) do
-               inner_namespaces.add new NamespaceRef(id, full_name)
-       end
-
-       redef fun declare_class(id, name, prot) do
-               assert not id.is_empty else
-                       sys.stderr.write "Inner class declarations without ID are not yet supported.\n"
-               end
-               graph.class_to_ns[id] = self
-       end
-
-       redef fun put_in_graph do
-               super
-               var full_name = self.full_name
-               if full_name isa String then graph.namespaces[full_name] = self
-       end
-
-       redef fun put_edges do
-               super
-               graph.add_edge(self, "PROJECT", graph.project)
-               for ns in inner_namespaces do
-                       var node = ns.seek_in(graph)
-                       graph.add_edge(node, "PARENT", self)
-                       graph.add_edge(self, "NESTS", node)
-               end
-       end
-end
-
-# A reference to a namespace.
-class NamespaceRef
-       # The `model_id` of the target.
-       #
-       # Empty when unknown or for the root namespace.
-       var model_id: String
-
-       # The `full_name` of the target.
-       #
-       # Empty only for the root namespace.
-       var full_name: String
-
-       # Look for the targeted namespace in the specified graph.
-       fun seek_in(graph: ProjectGraph): Namespace do
-               var ns_compound: Namespace
-
-               if model_id.is_empty and not full_name.is_empty then
-                       # ID unspecified. => We have to look by name
-                       assert graph.namespaces.has_key(full_name) else
-                               sys.stderr.write "Namespace `{full_name}` not found."
-                       end
-                       ns_compound = graph.namespaces[full_name]
-               else
-                       ns_compound = graph.by_id[model_id].as(Namespace)
-               end
-               return ns_compound
-       end
-end
-
-# The root namespace of a `ProjectGraph`.
-#
-# This the only entity in the graph whose `model_id` is really `""`.
-# Added automatically at the initialization of a `ProjectGraph`.
-class RootNamespace
-       super Namespace
-
-       init do
-               super
-               full_name = ""
-               name = graph.project_name
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/inner_class.nit b/contrib/neo_doxygen/src/model/inner_class.nit
deleted file mode 100644 (file)
index 9476739..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Adds the possibility to define inner classses.
-module model::inner_class
-
-import member
-import class_compound
-
-# An inner class.
-class InnerClass
-       super MemberOrInner
-
-       redef type INTRODUCER_TYPE: InnerClassIntroducer
-
-       # The outer class definition.
-       #
-       # Used to correct the short name of the inner class definition when
-       # `put_edges` is called.
-       #
-       # SEE: The notice concerning `name` in `/src/neo.nit`.
-       var outer: ClassDef
-
-       # The `model_id` of the actual inner class (`ClassCompound`).
-       var inner: String
-
-       init do
-               super
-               self.labels.add("MInnerClassDef")
-       end
-
-       redef fun is_intro do return true
-       redef fun create_introducer do return new InnerClassIntroducer(graph, self)
-       redef fun resolve_introducer do return introducer
-
-       redef fun put_edges do
-               super
-               var inner = graph.by_id[self.inner]
-               assert inner isa ClassCompound
-               var inner_def = inner.class_def
-               # Correct the short name of `inner` to avoid name collisions in a module.
-               inner_def.name = "{outer.name}{ns_separator}{name}"
-               graph.add_edge(self, "NESTS", inner_def)
-       end
-end
-
-# A `MProperty` node for an inner class.
-class InnerClassIntroducer
-       super MemberIntroducer
-
-       # The definition.
-       var def: InnerClass
-
-       init do
-               super
-               self.labels.add("MInnerClass")
-       end
-
-       redef fun put_edges do
-               super
-               var inner = graph.by_id[def.inner]
-               assert inner isa ClassCompound
-               var outer = def.outer.class_compound
-               # Correct the short name of `inner` to avoid name collisions in a module.
-               inner.name = "{outer.name}{ns_separator}{name}"
-               graph.add_edge(self, "NESTS", inner)
-       end
-end
-
-# Implements `declare_class`.
-redef class ClassCompound
-       redef fun declare_class(id, name, prot) do
-               class_def.declare_class(id, name, prot)
-       end
-end
-
-# Implements `declare_class`.
-redef class ClassDef
-
-       # The set of the defined inner classes.
-       #
-       # All `InnerClass` entities registred here are automatically added to the
-       # graph with the `ClassDef`.
-       #
-       # To ensure that each inner class will be correctly linked,
-       # `declare_class` should be used to add each inner class.
-       var inner_classes: SimpleCollection[InnerClass] = new Array[InnerClass]
-
-       # Declare an inner class.
-       #
-       # Parameters:
-       #
-       # * `id`: `model_id` of the inner class definition.
-       # * `name`: name of the inner class definition.
-       # * `prot`: visibility (proctection).
-       fun declare_class(id: String, name: String, prot: String) do
-               var member = new InnerClass(graph, self, id)
-               member.name = name
-               member.visibility = prot
-               members.add member
-               inner_classes.add member
-       end
-
-       redef fun put_in_graph do
-               super
-               for member in inner_classes do
-                       member.put_in_graph
-               end
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/linked_text.nit b/contrib/neo_doxygen/src/model/linked_text.nit
deleted file mode 100644 (file)
index 83fa3b8..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A text with links.
-module model::linked_text
-
-import graph
-
-# A text with links.
-abstract class LinkedText
-       super Entity
-
-       # All link in the text.
-       #
-       # Do not edit directly.
-       var links: Sequence[nullable Link] = new Array[nullable Link]
-
-       # Remove all the parts.
-       fun clear_parts do
-               self["text"] = null
-               links.clear
-       end
-
-       # Remove the first part.
-       fun shift_part do
-               var text = self["text"]
-               assert text isa JsonArray
-               text.shift
-               links.shift
-               if text.is_empty then
-                       self["text"] = null
-               end
-       end
-
-       # Remove the last part.
-       fun pop_part do
-               var text = self["text"]
-               assert text isa JsonArray
-               text.pop
-               links.pop
-               if text.is_empty then
-                       self["text"] = null
-               end
-       end
-
-       # Remove the part at the specified index.
-       fun remove_part_at(index: Int) do
-               var text = self["text"]
-               assert text isa JsonArray
-               text.remove_at(index)
-               links.remove_at(index)
-               if text.is_empty then
-                       self["text"] = null
-               end
-       end
-
-       # Change a part of text.
-       #
-       # Parameters:
-       #
-       # * `index` : the index of the part.
-       # * `content` : textual content.
-       # * `refid` : `model_id` of the linked entity or `""`.
-       fun set_part(index: Int, content: String, refid: String) do
-               var text = self["text"]
-               assert text isa JsonArray
-               text[index] = content
-               if not refid.is_empty then
-                       links[index] = create_link(links.length, refid)
-               else
-                       links[index] = null
-               end
-       end
-
-       # Append a part of text.
-       #
-       # Parameters:
-       #
-       # * `content` : textual content.
-       # * `refid` : `model_id` of the linked entity or `""`.
-       fun add_part(content: String, refid: String) do
-               var text = self["text"]
-
-               if text == null then
-                       text = new JsonArray
-                       self["text"] = text
-               end
-               assert text isa JsonArray
-               text.add(content)
-               if not refid.is_empty then
-                       links.add(create_link(links.length, refid))
-               else
-                       links.add(null)
-               end
-       end
-
-       # Create a link to the specified entity.
-       protected fun create_link(rank:Int, refid: String): Link is abstract
-
-       redef fun to_s do
-               var text = self["text"]
-
-               if text isa JsonArray then
-                       return text.join
-               else
-                       return "UNDEFINED"
-               end
-       end
-
-       redef fun put_in_graph do
-               super
-               for link in links do
-                       if link isa Link then
-                               link.put_in_graph
-                       end
-               end
-       end
-
-       redef fun put_edges do
-               super
-               for i in [0..links.length[ do
-                       var link = links[i]
-                       if link isa Link then
-                               link["rank"] = i
-                               graph.add_edge(self, "LINK", link)
-                       end
-               end
-       end
-end
-
-# A link.
-abstract class Link
-       super Entity
-
-       # * `refid` : `model_id` of the linked entity.
-       var refid: String
-
-       init do
-               super
-               self["rank"] = -1
-       end
-
-       redef fun put_edges do
-               graph.add_edge(self, "TARGET", graph.by_id[refid])
-       end
-
-       # Specify the rank (index) of the parameter in the signature.
-       #
-       # Called by `LinkedText.put_edges`.
-       private fun rank=(rank: Int) do
-               self["rank"] = rank
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/location.nit b/contrib/neo_doxygen/src/model/location.nit
deleted file mode 100644 (file)
index 4e58af0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This module is used to model locations in source files.
-module location
-
-import json
-
-# A location inside a source file.
-class Location
-       super Serializable
-
-       # The file’s path.
-       var path: nullable String = null is writable
-
-       # The one-based index of the first line.
-       var line_start: Int = 1 is writable
-
-       # The one-based index of the last line.
-       var line_end: Int = 1 is writable
-
-       # The one-based column index of the first character.
-       var column_start: Int = 1 is writable
-
-       # The one-based column index of the last character.
-       var column_end: Int = 1 is writable
-
-       redef fun to_s do
-               var path = path
-               var file_part = "/dev/null:"
-               if path != null and path.length > 0 then file_part = "{path}:"
-               return "{file_part}{line_start},{column_start}--{line_end},{column_end}"
-       end
-
-       redef fun serialize_to(v) do to_s.serialize_to v
-       redef fun accept_json_serializer(v) do to_s.serialize_to v
-end
diff --git a/contrib/neo_doxygen/src/model/member.nit b/contrib/neo_doxygen/src/model/member.nit
deleted file mode 100644 (file)
index 05b82cb..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Members.
-module model::member
-
-import graph
-import type_entity
-
-# A member or an inner class.
-abstract class MemberOrInner
-       super CodeBlock
-
-       # The type of the introducer.
-       type INTRODUCER_TYPE: MemberIntroducer
-
-       # The node used to represent the `MProperty` node.
-       #
-       # Only defined if `self` is at the root of a reimplementation graph, and
-       # only once `put_in_graph` is called.
-       var introducer: nullable INTRODUCER_TYPE = null
-
-       init do
-               super
-               self.labels.add("MPropDef")
-       end
-
-       # Does this member introduce the property?
-       fun is_intro: Bool is abstract
-
-       redef fun put_in_graph do
-               super
-               self["is_intro"] = is_intro
-               if is_intro then
-                       var visibility = self["visibility"]
-                       var name = self["name"]
-
-                       introducer = create_introducer
-                       if name isa String then
-                               introducer.name = name
-                       end
-                       if visibility isa String then
-                               introducer.visibility = visibility
-                       end
-                       introducer.put_in_graph
-               end
-       end
-
-       redef fun put_edges do
-               super
-               var intro = resolve_introducer
-
-               assert intro != null
-               graph.add_edge(self, "DEFINES", intro)
-       end
-
-       # Set the visibility.
-       fun visibility=(visibility: String) do
-               self["visibility"] = visibility
-               if introducer != null then
-                       introducer.as(not null).visibility = visibility
-               end
-       end
-
-       # Get the visibility.
-       #
-       # Return `""` by default.
-       fun visibility: String do
-               var visibility = self["visibility"]
-               if visibility isa String then return visibility
-               return ""
-       end
-
-       redef fun name=(name: String) do
-               super
-               if introducer != null then
-                       introducer.as(not null).name = name
-               end
-       end
-
-       # Create an instance of `MemberIntroducer` that will be linked to `self`.
-       protected fun create_introducer: INTRODUCER_TYPE is abstract
-
-       # Find the nearest reimplementation root.
-       fun resolve_introducer: nullable INTRODUCER_TYPE is abstract
-end
-
-# A member.
-abstract class Member
-       super MemberOrInner
-
-       # Members that this member redefines/reimplements.
-       var reimplemented: SimpleCollection[String] = new Array[String]
-
-       # Set the static type.
-       fun static_type=(static_type: nullable TypeEntity) is abstract
-
-       # Get the static type.
-       fun static_type: nullable TypeEntity is abstract
-
-       # Append the specified parameter to the signature.
-       fun add_parameter(parameter: MemberParameter) do end
-
-       # Append a member that is reimplemeneted by `self`.
-       fun reimplement(parent: String) do
-               reimplemented.add(parent)
-       end
-
-       redef fun is_intro do return reimplemented.length <= 0
-
-       # Is the member abstract?
-       fun is_abstract=(is_abstract: Bool) do
-               self["is_abstract"] = is_abstract
-       end
-
-       # Find the nearest reimplementation root.
-       #
-       #     var g = new ProjectGraph("foo")
-       #     var m1 = new Attribute(g)
-       #     var m2 = new Attribute(g)
-       #     var m3 = new Attribute(g)
-       #     #
-       #     m1.model_id = "1"
-       #     m1.put_in_graph
-       #     m2.reimplement("1")
-       #     m2.put_in_graph
-       #     assert m1.resolve_introducer == m1.introducer
-       #     assert m2.resolve_introducer == m1.introducer
-       #     #
-       #     m3.model_id = "3"
-       #     m3.reimplement("3")
-       #     m3.put_in_graph
-       #     assert m3.resolve_introducer == null
-       redef fun resolve_introducer do
-               if introducer == null then
-                       var member_queue = new List[String]
-                       var visited = new HashSet[Member]
-                       var member: Member
-
-                       member_queue.add_all(reimplemented)
-                       while not member_queue.is_empty do
-                               member = graph.by_id[member_queue.shift].as(Member)
-                               if visited.has(member) then
-                                       return null
-                               else if member.is_intro then
-                                       return member.introducer
-                               else
-                                       visited.add(member)
-                                       member_queue.add_all(member.reimplemented)
-                               end
-                       end
-                       return null
-               else
-                       return introducer
-               end
-       end
-end
-
-# An unrecognized member.
-#
-# Used to simplify the handling of ignored entities.
-class UnknownMember
-       super Member
-
-       redef fun put_in_graph do end
-       redef fun put_edges do end
-end
-
-# A local definition of a method.
-class Method
-       super Member
-
-       redef type INTRODUCER_TYPE: MethodIntroducer
-
-       # The method’s signature.
-       var signature: Signature is noinit, writable
-
-       init do
-               super
-               self.labels.add("MMethodDef")
-               self["is_intern"] = false # TODO
-               self["is_extern"] = false # TODO
-               signature = new Signature(graph)
-               is_abstract = false
-       end
-
-       # Set the return type.
-       redef fun static_type=(static_type: nullable TypeEntity) do
-               signature.return_type = static_type
-       end
-
-       # Get the return type.
-       redef fun static_type: nullable TypeEntity do return signature.return_type
-
-       redef fun add_parameter(parameter: MemberParameter) do
-               signature.parameters.add(parameter)
-       end
-
-       redef fun create_introducer do return new MethodIntroducer(graph)
-
-       redef fun put_in_graph do
-               super
-               signature.put_in_graph
-       end
-
-       redef fun put_edges do
-               super
-               graph.add_edge(self, "SIGNATURE", signature)
-       end
-end
-
-# A local definition of an attribute.
-class Attribute
-       super Member
-
-       redef type INTRODUCER_TYPE: AttributeIntroducer
-
-       # The declared type.
-       redef var static_type: nullable TypeEntity = null is writable
-
-       init do
-               super
-               self.labels.add("MAttributeDef")
-       end
-
-       redef fun create_introducer do return new AttributeIntroducer(graph)
-
-       redef fun put_in_graph do
-               super
-               if static_type != null then
-                       static_type.as(not null).put_in_graph
-               end
-       end
-
-       redef fun put_edges do
-               super
-               if static_type != null then
-                       graph.add_edge(self, "TYPE", static_type.as(not null))
-               end
-       end
-end
-
-# The `MProperty` node of a root of a reimplementation graph.
-abstract class MemberIntroducer
-       super Entity
-
-       init do
-               super
-               self.labels.add("MProperty")
-               self["visibility"] = "public"
-       end
-
-       # Set the visibility.
-       fun visibility=(visibility: String) do
-               self["visibility"] = visibility
-       end
-
-       # Get the visibility.
-       #
-       # Return `""` by default.
-       fun visibility: String do
-               var visibility = self["visibility"]
-               if visibility isa String then return visibility
-               return ""
-       end
-end
-
-# A `MProperty` node for a method.
-class MethodIntroducer
-       super MemberIntroducer
-
-       init do
-               super
-               self.labels.add("MMethod")
-               self["is_init"] = false # TODO
-       end
-end
-
-# A `MProperty` node for an attribute.
-class AttributeIntroducer
-       super MemberIntroducer
-
-       init do
-               super
-               self.labels.add("MAttribute")
-       end
-end
-
-redef class Compound
-       # Append the specified member.
-       fun declare_member(member: Member) do end
-end
diff --git a/contrib/neo_doxygen/src/model/module_compound.nit b/contrib/neo_doxygen/src/model/module_compound.nit
deleted file mode 100644 (file)
index aca8dfc..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Nodes for modules and files.
-module model::module_compound
-
-import graph
-import class_compound
-import namespace_members
-
-# A source file.
-#
-# Creates one modules by inner namespace. The full name of the modules begin
-# with the namespace’s full name, and end with the unqualified name of the file,
-# without the extension.
-#
-# Note: If a module associated to the root namespace is needed, it is added to
-# the graph only when `put_edges` is called.
-class FileCompound
-       super Compound
-       super CodeBlock
-
-       # Modules corresponding to the namespaces defined/redefined in the file.
-       private var inner_namespaces = new Array[Module]
-
-       # `model_id` of the classes declared in the file.
-       private var inner_classes = new Array[String]
-
-       # The last component of the path, without the extension.
-       #
-       # Used as the unqualified name of the modules.
-       private var basename: String = ""
-
-       init do
-               super
-       end
-
-       redef fun location=(location) do
-               super
-               for m in inner_namespaces do m.location = location
-       end
-
-       redef fun name=(name) do
-               # Example: `MyClass.java`
-               super
-               var match = name.search_last(".")
-
-               if match == null then
-                       basename = name
-               else
-                       basename = name.substring(0, match.from)
-               end
-               # Update the modules’ name.
-               for m in inner_namespaces do m.update_name
-       end
-
-       redef fun declare_namespace(id, full_name) do
-               var m: Module
-
-               assert not full_name.is_empty or id.is_empty else
-                       sys.stderr.write "Inner mamespace declarations without name are not yet supported (except for the root namespace).\n"
-               end
-               m = new Module(graph, self, new NamespaceRef(id, full_name))
-               m.location = location
-               inner_namespaces.add m
-       end
-
-       redef fun declare_class(id, name, prot) do
-               assert not id.is_empty else
-                       sys.stderr.write "Inner class declarations without ID are not yet supported.\n"
-               end
-               inner_classes.add id
-       end
-
-       redef fun put_in_graph do
-               # Do not add `self` to the Neo4j graph...
-               # ... but add its modules...
-               for m in inner_namespaces do m.put_in_graph
-               # ... and add `self` to the indexes.
-               if model_id != "" then graph.by_id[model_id] = self
-               graph.files.add self
-       end
-
-       # If the file contains some classes in the root namespace, add an implicit
-       # module to handle them.
-       #
-       # This method is called by `ProjectGraph.add_global_modules` and assumes
-       # that all the namespaces are already fully set and put in the graph.
-       fun declare_root_namespace do
-               if has_globals then
-                       declare_namespace("", "")
-                       inner_namespaces.last.put_in_graph
-               end
-       end
-
-       # Does this file contain classes in the root namespace?
-       private fun has_globals: Bool do
-               var root = graph.by_id[""]
-               for c in inner_classes do
-                       if graph.class_to_ns[c] == root then return true
-               end
-               return false
-       end
-end
-
-# A `MModule` node.
-#
-# For each file, there is one module by inner namespace.
-private class Module
-       super Compound
-       super CodeBlock
-
-       # The file that declares the module.
-       var file_compound: FileCompound
-
-       # The namespace defined or redefined by the module.
-       var namespace: NamespaceRef
-
-       init do
-               super
-               self.labels.add("MModule")
-               update_name
-       end
-
-       # Update the `name`.
-       #
-       # Update the short name of the module to the `basename` of the file that
-       # declares it.
-       fun update_name do name = file_compound.basename
-
-       redef fun put_edges do
-               var ns_compound = namespace.seek_in(graph)
-               var self_class = ns_compound.self_class
-               var class_count = 0
-               var last_class: nullable ClassCompound = null
-
-               graph.add_edge(ns_compound, "DECLARES", self)
-
-               for c in file_compound.inner_classes do
-                       if graph.class_to_ns[c] != ns_compound then continue
-                       var class_compound = graph.by_id[c].as(ClassCompound)
-                       last_class = class_compound
-                       class_count += 1
-                       graph.add_edge(self, "INTRODUCES", class_compound)
-                       graph.add_edge(self, "DEFINES", class_compound.class_def)
-               end
-
-               if self_class isa SelfClass then
-                       # We assume that only one file is linked to the namespace.
-                       # TODO When Doxygen will provide a way to know which file defines which member, use it.
-                       self_class.location = file_compound.location
-                       graph.add_edge(self, "INTRODUCES", self_class)
-                       graph.add_edge(self, "DEFINES", self_class.class_def)
-               end
-
-               if doc.is_empty and class_count == 1 then
-                       doc = last_class.as(not null).doc
-               end
-               if doc.is_empty then doc = file_compound.doc
-               if doc.is_empty then doc = ns_compound.doc
-               if not doc.is_empty then set_mdoc
-       end
-end
-
-# Adds the `add_global_modules` phase to `ProjectGraph`.
-redef class ProjectGraph
-
-       # Project’s source files.
-       var files: SimpleCollection[FileCompound] = new Array[FileCompound]
-
-       # Add the modules that define the root namespace.
-       #
-       # **Must** be called before any call to `put_edges`, and after all the
-       # namespaces are fully set and put in the graph.
-       #
-       # Note: This method is not idempotent so it has to be called only once.
-       fun add_global_modules do
-               for f in files do f.declare_root_namespace
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/namespace_members.nit b/contrib/neo_doxygen/src/model/namespace_members.nit
deleted file mode 100644 (file)
index 4c85d5a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Add support for namespace’s members.
-module model::namespace_members
-
-import class_compound
-import member
-
-redef class Namespace
-       # The class that contains the namespace’s direct members.
-       #
-       # Left `null` for the root namespace and for any namespace with no direct
-       # member. Automatically put in the graph with the namespace.
-       #
-       # Note: In the graph, the `self_class` not linked directly to the namespace.
-       # This is the role of the modules implicitly created by `FileCompound`s to
-       # link a namespace to its `self_class`.
-       #
-       # SEE: `declare_member`
-       var self_class: nullable SelfClass = null
-
-       # Add the specified member as a direct children of the namespace.
-       redef fun declare_member(member) do
-               if self_class == null then self_class = new SelfClass(graph, self)
-               self_class.as(not null).declare_member(member)
-       end
-
-       redef fun put_in_graph do
-               super
-               var self_class = self.self_class
-               if self_class isa SelfClass then self_class.put_in_graph
-       end
-end
-
-redef class RootNamespace
-       redef fun declare_member(member) do
-               assert false else
-                       # TODO Check how Doxygen modelize member of the root namespace.
-                       # Note: Doxygen does not modelize the root namespace.
-                       sys.stderr.write "The addition of a member to the root namespace is not supported yet."
-               end
-       end
-end
-
-# A class that contains a namespace’s direct members.
-class SelfClass
-       super ClassCompound
-
-       # The namespace of the members
-       var namespace: Namespace
-
-       init do
-               super
-               name = "(self)"
-       end
-
-       redef fun put_in_graph do
-               if doc.is_empty then doc = namespace.doc
-               super
-       end
-end
diff --git a/contrib/neo_doxygen/src/model/type_entity.nit b/contrib/neo_doxygen/src/model/type_entity.nit
deleted file mode 100644 (file)
index d8ea8c0..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Typing and parameters.
-module model::type_entity
-
-import graph
-import linked_text
-
-# Base class of all types and signatures.
-abstract class TypeEntity
-       super Entity
-
-       init do
-               super
-               self.labels.add("MType")
-       end
-end
-
-# A type parameter or a type argument.
-#
-# Note : The class relationship and the rank are set by `MClassType.put_edges`.
-class TypeParameter
-       super TypeEntity
-       super Parameter
-
-       init do
-               super
-               self.labels.add("MParameterType")
-       end
-end
-
-
-# A type described by a text.
-class RawType
-       super TypeEntity
-       super LinkedText
-
-       init do
-               super
-               self.labels.add("MRawType")
-       end
-
-       redef fun create_link(rank, refid) do return new TypeLink(graph, refid)
-end
-
-# A link in a `RawType`.
-class TypeLink
-       super Link
-
-       init do
-               super
-               self.labels.add("MTypePart")
-       end
-end
-
-
-# A signature of a method.
-class Signature
-       super TypeEntity
-
-       # The parameters.
-       var parameters = new Array[MemberParameter]
-
-       # The static type of the returned value.
-       var return_type: nullable TypeEntity = null is writable
-
-       init do
-               super
-               self.labels.add("MSignature")
-       end
-
-       redef fun put_in_graph do
-               super
-               if return_type isa TypeEntity then
-                       return_type.as(TypeEntity).put_in_graph
-               end
-               for p in parameters do
-                       p.put_in_graph
-               end
-       end
-
-       redef fun put_edges do
-               super
-               if parameters.length > 0 then
-                       var names = new JsonArray
-
-                       for i in [0..parameters.length[ do
-                               var p = parameters[i]
-                               p.rank = i
-                               names.add(p.name)
-                               graph.add_edge(self, "PARAMETER", p)
-                       end
-                       self["parameter_names"] = names
-               end
-               if return_type != null then
-                       graph.add_edge(self, "RETURNTYPE", return_type.as(not null))
-               end
-       end
-end
-
-# A parameter or an argument.
-abstract class Parameter
-       super Entity
-
-       # The static type of the parameter.
-       var static_type: nullable TypeEntity = null is writable
-
-       init do
-               super
-               self["is_vararg"] = false
-               self["rank"] = -1
-       end
-
-       # Is the parameter a “vararg”?
-       fun is_vararg=(is_vararg: Bool) do
-               self["is_vararg"] = is_vararg
-       end
-
-       # Is the parameter a “vararg”?
-       fun is_vararg: Bool do
-               var value = self["is_vararg"]
-               assert value isa Bool
-               return value
-       end
-
-       # Set the rank (index) of the parameter in the signature.
-       fun rank=(rank: Int) do
-               self["rank"] = rank
-       end
-
-       redef fun put_in_graph do
-               super
-               if static_type != null then
-                       static_type.as(not null).put_in_graph
-               end
-       end
-
-       redef fun put_edges do
-               super
-               graph.add_edge(self, "TYPE", static_type.as(not null))
-       end
-end
-
-# A parameter of a member.
-#
-# Note : The rank are set by `Signature.put_edges`.
-class MemberParameter
-       super Parameter
-
-       init do
-               super
-               self.labels.add("MParameter")
-       end
-end
diff --git a/contrib/neo_doxygen/src/neo_doxygen.nit b/contrib/neo_doxygen/src/neo_doxygen.nit
deleted file mode 100644 (file)
index 30421eb..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Doxygen XML to Neo4j.
-#
-# Converts a Doxygen XML output into a model in Neo4j that is readable by the
-# `nx` tool.
-module neo_doxygen
-
-import model
-import doxml
-import graph_store
-import console
-import opts
-
-# An importation task.
-class NeoDoxygenJob
-
-       # The storage medium to use.
-       var store: GraphStore
-
-       # The loaded project graph.
-       var model: ProjectGraph is noinit
-
-       # Escape control sequence to save the cursor position.
-       private var term_save_cursor: String = (new TermSaveCursor).to_s
-
-       # Escape control sequence to rewind to the last saved cursor position.
-       private var term_rewind: String = "{new TermRestoreCursor}{new TermEraseDisplayDown}"
-
-       # Generate a graph from the specified project model.
-       #
-       # Parameters:
-       #
-       # * `name`: project name.
-       # * `dir`: Doxygen XML output directory path.
-       # * `source`: The language-specific logics to use.
-       fun load_project(name: String, dir: String, source: SourceLanguage) do
-               check_name name
-               model = new ProjectGraph(name)
-               var reader = new CompoundFileReader(model, source)
-               # Queue for sub-directories.
-               var directories = new Array[String]
-               var file_count = 0
-
-               if dir == "" then
-                       printn "Reading the current directory... "
-               else
-                       printn "Reading {dir}... "
-               end
-               loop
-                       for f in list_files(dir) do
-                               var path = dir/f
-                               if path.file_stat.as(not null).is_dir then
-                                       directories.push(path)
-                               else if f.has_suffix(".xml") and f != "index.xml" then
-                                       reader.read(path)
-                                       file_count += 1
-                               end
-                       end
-                       if directories.length <= 0 then break
-                       dir = directories.pop
-               end
-               model.add_global_modules
-               print "Done."
-               if file_count < 2 then
-                       print "{file_count} file read."
-               else
-                       print "{file_count} files read."
-               end
-       end
-
-       # List files in a directory.
-       #
-       # This method may be redefined to force the order in which the files
-       # are read by `load_project`.
-       protected fun list_files(dir: String): Collection[String] do
-               return dir.files
-       end
-
-       # Check the project’s name.
-       private fun check_name(name: String) do
-               assert name_valid: not name.chars.first.is_upper else
-                       sys.stderr.write("{sys.program_name}: The project’s name must not" +
-                                       " begin with an upper case letter. Got `{name}`.\n")
-               end
-               assert name_unused: not store.has_node_label(name) else
-                       sys.stderr.write("{sys.program_name}: The label `{name}` is already" +
-                       " used in the specified graph.\n")
-               end
-       end
-
-       # Save the graph.
-       fun save do
-               sys.stdout.write "Linking nodes...{term_save_cursor} "
-               model.put_edges
-               print "{term_rewind} Done."
-               var nodes = model.all_nodes
-               sys.stdout.write "Saving {nodes.length} nodes..."
-               store.save_all(nodes)
-               var edges = model.all_edges
-               sys.stdout.write "Saving {edges.length} edges..."
-               store.save_all(edges)
-       end
-end
-
-# The main class.
-class NeoDoxygenCommand
-
-       # Invalid arguments
-       var e_usage = 64
-
-       # Available options for `--src-lang`.
-       var sources = new HashMap[String, SourceLanguage]
-
-       # The synopsis.
-       var synopsis: String = "[--dest <url>] [--src-lang <lang>]\n" +
-                       "    [--] <project_name> <doxml_dir>"
-
-       # The synopsis for the help page.
-       var help_synopsis = "[-h|--help]"
-
-       # The default destination.
-       var default_dest = "http://localhost:7474"
-
-       # Processes the options.
-       var option_context = new OptionContext
-
-       # The `--src-lang` option.
-       var opt_src_lang: OptionEnum is noinit
-
-       # The `--dest` option.
-       var opt_dest: OptionString is noinit
-
-       # The `-h|--help` option.
-       var opt_help: OptionBool is noinit
-
-       init do
-               sources["any"] = new DefaultSource
-               sources["java"] = new JavaSource
-               sources["python"] = new PythonSource
-
-               var prefix = new OptionText("""
-{{{"NAME".bold}}}
-  {{{sys.program_name}}} — Doxygen XML to Neo4j.
-
-{{{"SYNOPSIS".bold}}}
-  {{{sys.program_name}}} {{{synopsis}}}
-  {{{sys.program_name}}} {{{help_synopsis}}}
-
-{{{"DESCRIPTION".bold}}}
-  Convert a Doxygen XML output into a model in Neo4j that is readable by the
-  `nx` tool.
-
-{{{"ARGUMENTS".bold}}}
-  <project_name>  The internal name of the project. Must the same name as the
-                  one specified to the `nx` tool. Must not begin by an upper
-                  case letter.
-
-  <doxml_dir>     The directory where the XML documents generated by Doxygen are
-                  located.
-
-{{{"OPTIONS".bold}}}
-""")
-               option_context.add_option(prefix)
-
-               opt_dest = new OptionString("The URL of the destination graph. `{default_dest}` by default.",
-                               "--dest")
-               opt_dest.default_value = default_dest
-               option_context.add_option(opt_dest)
-
-               opt_help = new OptionBool("Show the help (this page).",
-                               "-h", "--help")
-               option_context.add_option(opt_help)
-
-               var keys = new Array[String].from(sources.keys)
-               opt_src_lang = new OptionEnum(keys,
-                               "The programming language to assume when processing chunks in the declarations left as-is by Doxygen. Use `any` (the default) to disable any language-specific processing.",
-                               keys.index_of("any"), "--src-lang")
-               option_context.add_option(opt_src_lang)
-       end
-
-       # Start the application.
-       fun main: Int do
-               if args.is_empty then
-                       show_help
-                       return e_usage
-               end
-               option_context.parse(args)
-
-               var errors = option_context.errors
-               var rest = option_context.rest
-
-               if errors.is_empty and not opt_help.value and rest.length != 2 then
-                       errors.add "Unexpected number of additional arguments. Expecting 2; got {rest.length}."
-               end
-               if not errors.is_empty then
-                       for e in errors do print_error(e)
-                       show_usage
-                       return e_usage
-               end
-               if opt_help.value then
-                       show_help
-                       return 0
-               end
-
-               var source = sources[opt_src_lang.value_name]
-               var dest = opt_dest.value
-               var project_name = rest[0]
-               var dir = rest[1]
-               var neo = new NeoDoxygenJob(create_store(dest or else default_dest))
-
-               neo.load_project(project_name, dir, source)
-               neo.save
-               return 0
-       end
-
-       # Create an instance of `GraphStore` for the specified destination.
-       protected fun create_store(dest: String): GraphStore do
-               return new Neo4jStore(new Neo4jClient(dest))
-       end
-
-       # Show the help.
-       fun show_help do
-               option_context.usage
-       end
-
-       # Show the usage.
-       fun show_usage do
-               sys.stderr.write "Usage: {sys.program_name} {synopsis}\n"
-               sys.stderr.write "For details, run `{sys.program_name} --help`.\n"
-       end
-
-       # Print an error.
-       fun print_error(e: String) do
-               sys.stderr.write "{sys.program_name}: {e}\n"
-       end
-end
-
-# Add handling of multi-line descriptions.
-#
-# Note: The algorithm is naive and do not handle internationalisation,
-# multi-byte characters and control characters.
-redef class Option
-
-       redef fun pretty(off) do
-               var s = super
-
-               if s.length > 80 and off < 80 then
-                       var column_length = 80 - off
-                       var left = 0
-                       var right = 80
-                       var buf = new FlatBuffer
-                       var prefix = "\n{" " * off}"
-
-                       loop
-                               while right > left and s.chars[right] != ' ' do
-                                       right -= 1
-                               end
-                               if left == right then
-                                       buf.append s.substring(left, column_length)
-                                       right += column_length
-                               else
-                                       buf.append s.substring(left, right - left)
-                                       right += 1
-                               end
-                               buf.append prefix
-                               left = right
-                               right += column_length
-                               if right >= s.length then break
-                       end
-                       buf.append s.substring_from(left)
-                       buf.append "\n"
-                       return buf.to_s
-               else
-                       return "{s}\n"
-               end
-       end
-end
-
-exit((new NeoDoxygenCommand).main)
diff --git a/contrib/neo_doxygen/src/tests/README.md b/contrib/neo_doxygen/src/tests/README.md
deleted file mode 100644 (file)
index fbb4393..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-Test scripts for `neo_doxygen`.
-
-The name of each test script is prefixed by `neo_doxygen_` to avoid name
-conflicts in `/tests/sav` and `/tests/out`. The expected output of each script
-is saved as a `*.res` file in `/tests/sav`.
-
-Note: All paths indicated here are relative to the root of the repository.
diff --git a/contrib/neo_doxygen/src/tests/neo_doxygen_doc_module_class.nit b/contrib/neo_doxygen/src/tests/neo_doxygen_doc_module_class.nit
deleted file mode 100644 (file)
index 48f73d5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import tests
-intrude import model::module_compound
-
-var graph = new ProjectGraph("foo")
-var file = new FileCompound(graph)
-var bar_class = new ClassCompound(graph)
-var a_ns = new Namespace(graph)
-
-file.full_name = "Baz.java"
-file.declare_class("classa_bar", "a::Bar", "public")
-file.declare_namespace("namespacea", "a")
-file.doc.brief_description = "A file."
-file.put_in_graph
-
-a_ns.full_name = "a"
-a_ns.model_id = "namespacea"
-a_ns.declare_class("classa_bar", "a::Bar", "public")
-a_ns.doc.brief_description = "A namespace."
-a_ns.put_in_graph
-
-bar_class.model_id = "classa_bar"
-bar_class.full_name = "a::Bar"
-bar_class.doc.brief_description = "A class."
-bar_class.put_in_graph
-
-graph.add_global_modules
-graph.put_edges
-
-assert file.inner_namespaces[0]["mdoc"] == bar_class.doc
diff --git a/contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit b/contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit
deleted file mode 100644 (file)
index f594de9..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A variant of the `neo_doxygen` program that produces a debugging output of the graph instead of saving it.
-#
-# Note: The `--dest` option is ignored.
-module tests::neo_doxygen_dump
-
-import tests
-import neo_doxygen
-
-redef class Sys
-       redef fun program_name do return "%PROGRAM_NAME%"
-end
-
-redef class NeoDoxygenJob
-       redef fun list_files(dir) do
-               var a = super.to_a
-               default_comparator.sort(a)
-               return a
-       end
-end
-
-redef class NeoDoxygenCommand
-       redef fun create_store(url) do return new DebugStore
-end
-
-# Dummy storage medium that write a debugging output to the standard output.
-#
-# For testing purposes only.
-class DebugStore
-       super GraphStore
-
-       redef fun has_node_label(name) do return false
-
-       redef fun save_all(neo_entities) do
-               print ""
-               for n in neo_entities do
-                       if n isa NeoEdge then
-                               var buffer = new Buffer
-                               n.debug buffer
-                               print buffer
-                       end
-               end
-               print "---===DONE===---"
-       end
-end
diff --git a/contrib/neo_doxygen/src/tests/neo_doxygen_file_compound.nit b/contrib/neo_doxygen/src/tests/neo_doxygen_file_compound.nit
deleted file mode 100644 (file)
index a9dae43..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import tests
-import model::module_compound
-
-var graph = new ProjectGraph("foo")
-var file = new FileCompound(graph)
-var file_2 = new FileCompound(graph)
-var bar_class = new ClassCompound(graph)
-var baz_class = new ClassCompound(graph)
-var a_ns = new Namespace(graph)
-var b_ns = new Namespace(graph)
-var c_ns = new Namespace(graph)
-var d_ns = new Namespace(graph)
-var buffer = new Buffer
-var root_ns = graph.by_id[""].as(Namespace)
-var location
-
-file.name = "Bar.java"
-file.model_id = "_Bar_8java"
-location = new neo_doxygen::Location
-location.path = "a/b/Bar.java"
-file.location = location
-file.declare_class("classa_b_bar", "a::b::Bar", "package")
-file.declare_class("classbaz", "Baz", "")
-file.declare_namespace("", "a::b")
-file.doc.brief_description = "The first file."
-file.put_in_graph
-
-file_2.name = "Bar.java"
-file_2.model_id = "_Bar_8java_2"
-location = new neo_doxygen::Location
-location.path = "Bar.java"
-file_2.location = location
-file_2.declare_namespace("namespacec", "c")
-file_2.declare_namespace("", "d")
-file_2.put_in_graph
-
-bar_class.model_id = "classa_b_bar"
-bar_class.name = "Bar"
-location = new neo_doxygen::Location
-location.path = "a/b/Bar.class"
-location.line_start = 5
-location.column_start = 1
-location.line_end = 100
-location.column_end = 10
-bar_class.location = location
-bar_class.put_in_graph
-
-baz_class.model_id = "classbaz"
-baz_class.name = "Baz"
-location = new neo_doxygen::Location
-location.path = "Baz.jar"
-baz_class.location = location
-baz_class.put_in_graph
-
-root_ns.declare_namespace("", "a")
-root_ns.declare_namespace("namespacec", "c")
-root_ns.declare_namespace("", "d")
-
-a_ns.name = "a"
-a_ns.full_name = "a"
-a_ns.declare_namespace("", "a::b")
-a_ns.put_in_graph
-
-b_ns.name = "b"
-b_ns.full_name = "a::b"
-b_ns.declare_class("classa_b_bar", "", "")
-b_ns.put_in_graph
-
-c_ns.model_id = "namespacec"
-c_ns.name = "c"
-c_ns.full_name = "c"
-c_ns.put_in_graph
-
-d_ns.model_id = "namespaced"
-d_ns.name = "d"
-d_ns.full_name = "d"
-d_ns.put_in_graph
-
-print "---===WITHOUT GLOBALS===---"
-graph.put_edges
-graph.debug buffer
-print buffer
-
-print "---===WITH GLOBALS===---"
-buffer.clear
-graph.add_global_modules
-graph.put_edges
-graph.debug buffer
-print buffer
diff --git a/contrib/neo_doxygen/src/tests/neo_doxygen_namespace_members.nit b/contrib/neo_doxygen/src/tests/neo_doxygen_namespace_members.nit
deleted file mode 100644 (file)
index bf0a62f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import tests
-import model
-
-var graph = new ProjectGraph("foo")
-var file = new FileCompound(graph)
-var root_ns = graph.by_id[""].as(Namespace)
-var ns = new Namespace(graph)
-var member = new Attribute(graph)
-var buffer = new Buffer
-
-file.name = "foo.py"
-file.model_id = "_foo_8py"
-file.declare_namespace("namespacefoo", "foo")
-file.put_in_graph
-
-member.name = "bar"
-member.put_in_graph
-
-ns.model_id = "namespacefoo"
-ns.name = "foo"
-ns.declare_member(member)
-ns.doc.brief_description = "A documented namespace."
-ns.put_in_graph
-
-root_ns.declare_namespace("namespacefoo", "")
-
-graph.add_global_modules
-graph.put_edges
-graph.debug buffer
-print buffer
diff --git a/contrib/neo_doxygen/src/tests/tests.nit b/contrib/neo_doxygen/src/tests/tests.nit
deleted file mode 100644 (file)
index b1481b3..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Base module for tests related to `neo_doxygen`.
-module tests::tests
-
-import model::graph
-
-# Adds debugging output to graphs.
-redef class NeoGraph
-
-       # Append the debugging output of all relationships to the specified buffer.
-       fun debug(buffer: Buffer) do
-               buffer.append "# Graph\n"
-               for edge in all_edges do
-                       edge.debug buffer
-               end
-       end
-end
-
-# Adds debugging output to relationships.
-redef class NeoEdge
-
-       # Append the debugging output of this relationship to the specified buffer.
-       #
-       # Append the relationship type, the properties, and the debugging output of
-       # both extremities.
-       fun debug(buffer: Buffer) do
-               var rel_type = self.rel_type or else "?"
-               buffer.append "Edge\n"
-               buffer.append "=type={rel_type.length}:{rel_type}\n"
-               buffer.append "=properties=JsonObject({properties.length}):\n"
-               buffer.append properties.to_json
-               buffer.append "\n----\n=from="
-               from.debug buffer
-               buffer.append "----\n=to="
-               to.debug buffer
-               buffer.append "\n"
-       end
-end
-
-# Adds debugging output to nodes.
-redef class NeoNode
-
-       # Append the debugging output of this node to the specified buffer.
-       #
-       # Append the labels and the properties.
-       fun debug(buffer: Buffer) do
-               buffer.append "Node\n"
-               buffer.append "=labels=Array({labels.length}):\n"
-               for lab in labels do buffer.append "{lab.length}:{lab}\n"
-               buffer.append "=properties=JsonObject({properties.length}):\n"
-               buffer.append properties.to_json
-               buffer.append "\n"
-       end
-end
-
-# Adds debugging output to entities.
-redef class Entity
-
-       # Append the debugging output of this entity to the specified buffer.
-       #
-       # Append the `model_id`, the labels and the properties.
-       redef fun debug(buffer) do
-               buffer.append "Entity#{model_id.length}:{model_id}\n"
-               buffer.append "=labels=Array({labels.length}):\n"
-               for lab in labels do buffer.append "{lab.length}:{lab}\n"
-               buffer.append "=properties=JsonObject({properties.length}):\n"
-               buffer.append properties.to_json
-               buffer.append "\n"
-       end
-end
diff --git a/contrib/neo_doxygen/tests/.gitattributes b/contrib/neo_doxygen/tests/.gitattributes
deleted file mode 100644 (file)
index ab22f42..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/*/xml/*       -diff
diff --git a/contrib/neo_doxygen/tests/.gitignore b/contrib/neo_doxygen/tests/.gitignore
deleted file mode 100644 (file)
index ad8b991..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/*/Makefile
-/*/.nx_config
diff --git a/contrib/neo_doxygen/tests/Makefile b/contrib/neo_doxygen/tests/Makefile
deleted file mode 100644 (file)
index d90195d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# All the dummy projects.
-PROJECTS=$(dir $(wildcard ./*/Doxyfile))
-
-.PHONY: xml bootstrap
-
-# Regenerate the XML documents.
-xml: bootstrap
-       for p in $(PROJECTS); do $(MAKE) -C "$$p" xml || exit; done
-
-# Generate the Makefiles in the sub-directories.
-bootstrap:
-       for p in $(PROJECTS); do { \
-               echo '# FILE GENERATED BY ../Makefile'"\n" > "$$p/Makefile" || exit; \
-               cat doxyproject.mk >> "$$p/Makefile" || exit; \
-       } ; done
diff --git a/contrib/neo_doxygen/tests/README.md b/contrib/neo_doxygen/tests/README.md
deleted file mode 100644 (file)
index 5c2c616..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Data files for tests.
-
-For test scripts, see `../src/tests`. To regenerate the XML documents, run
-`make`.
-
-## Required to Generate the XML documents
-
-* [Doxygen](http://www.doxygen.org/)
diff --git a/contrib/neo_doxygen/tests/doxyproject.mk b/contrib/neo_doxygen/tests/doxyproject.mk
deleted file mode 100644 (file)
index b6ce8e0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-.PHONY: clean doxygen strip_paths xml
-
-# Regenerate the XML documents.
-xml: strip_paths
-
-clean:
-       rm -rf xml
-
-doxygen: clean
-       doxygen Doxyfile
-
-# Get rid of the absolute paths in the generated files.
-#
-# Doxygen ignores the `STRIP_FROM_PATH` setting when generating a XML output.
-# So, we have to replace the paths manually in order to get reproducible
-# results.
-#
-# WARNING: FOR USE ON TEST DATA ONLY.
-strip_paths: doxygen
-       . ../../sh-lib/more_sed.sh; \
-       replace `readlink -f -- ./src` '%SOURCE_DIRECTORY%' xml/*.xml
diff --git a/contrib/neo_doxygen/tests/empty-project/Doxyfile b/contrib/neo_doxygen/tests/empty-project/Doxyfile
deleted file mode 100644 (file)
index bd06324..0000000
+++ /dev/null
@@ -1,2381 +0,0 @@
-# Doxyfile 1.8.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "Test Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = YES
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = src
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.idl \
-                         *.ddl \
-                         *.odl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.cs \
-                         *.d \
-                         *.php \
-                         *.php4 \
-                         *.php5 \
-                         *.phtml \
-                         *.inc \
-                         *.m \
-                         *.markdown \
-                         *.md \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.for \
-                         *.tcl \
-                         *.vhd \
-                         *.vhdl \
-                         *.ucf \
-                         *.qsf \
-                         *.as \
-                         *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = NO
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra stylesheet files is of importance (e.g. the last
-# stylesheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = YES
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-PLANTUML_JAR_PATH      =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/contrib/neo_doxygen/tests/empty-project/README.md b/contrib/neo_doxygen/tests/empty-project/README.md
deleted file mode 100644 (file)
index 85bf9fe..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains an empty project for testing purposes.
-
-To regenerate the XML output located in `xml`, run `make`. If the `Makefile`
-does not exists, you can regenerate it by running `make bootstrap` in the parent
-directory.
diff --git a/contrib/neo_doxygen/tests/empty-project/xml/combine.xslt b/contrib/neo_doxygen/tests/empty-project/xml/combine.xslt
deleted file mode 100644 (file)
index c148ee4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- XSLT script to combine the generated output into a single file. 
-     If you have xsltproc you could use:
-     xsltproc combine.xslt index.xml >all.xml
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" version="1.0" indent="no" standalone="yes" />
-  <xsl:template match="/">
-    <doxygen version="{doxygenindex/@version}">
-      <!-- Load all doxgen generated xml files -->
-      <xsl:for-each select="doxygenindex/compound">
-        <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" />
-      </xsl:for-each>
-    </doxygen>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/contrib/neo_doxygen/tests/empty-project/xml/compound.xsd b/contrib/neo_doxygen/tests/empty-project/xml/compound.xsd
deleted file mode 100644 (file)
index 86740f4..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygen" type="DoxygenType"/>
-
-  <!-- Complex types -->
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence maxOccurs="unbounded">
-      <xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="version" type="DoxVersionNumber" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compounddefType">
-    <xsd:sequence>
-      <xsd:element name="compoundname" type="xsd:string"/>
-      <xsd:element name="title" type="xsd:string" minOccurs="0" />
-      <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
-      <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="programlisting" type="listingType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" minOccurs="0" />
-      <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="kind" type="DoxCompoundKind" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="abstract" type="DoxBool" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listofallmembersType">
-    <xsd:sequence>
-      <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="memberRefType">
-    <xsd:sequence>
-      <xsd:element name="scope" />
-      <xsd:element name="name" />
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="virt" type="DoxVirtualKind" />
-    <xsd:attribute name="ambiguityscope" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compoundRefType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" use="optional" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" />
-        <xsd:attribute name="virt" type="DoxVirtualKind" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="reimplementType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="incType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="local" type="DoxBool" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refTextType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-       <xsd:attribute name="refid" type="xsd:string" />
-       <xsd:attribute name="kindref" type="DoxRefKind" />
-       <xsd:attribute name="external" type="xsd:string" use="optional"/>
-       <xsd:attribute name="tooltip" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="sectiondefType">
-    <xsd:sequence>
-      <xsd:element name="header" type="xsd:string" minOccurs="0" />
-      <xsd:element name="description" type="descriptionType" minOccurs="0" />
-      <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="memberdefType">
-    <xsd:sequence>
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="definition" minOccurs="0" />
-      <xsd:element name="argsstring" minOccurs="0" />
-      <xsd:element name="name" />
-      <xsd:element name="read" minOccurs="0" />
-      <xsd:element name="write" minOccurs="0" />
-      <xsd:element name="bitfield" minOccurs="0" />
-      <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" />
-      <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxMemberKind" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="static" type="DoxBool" />
-    <xsd:attribute name="const" type="DoxBool" use="optional"/>
-    <xsd:attribute name="explicit" type="DoxBool" use="optional"/>
-    <xsd:attribute name="inline" type="DoxBool" use="optional"/>
-    <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/>
-    <xsd:attribute name="volatile" type="DoxBool" use="optional"/>
-    <xsd:attribute name="mutable" type="DoxBool" use="optional"/>
-    <!-- Qt property -->
-    <xsd:attribute name="readable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="writable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI variable -->
-    <xsd:attribute name="initonly" type="DoxBool" use="optional"/>
-    <!-- C++/CLI and C# property -->
-    <xsd:attribute name="settable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="gettable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI function -->
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="new" type="DoxBool" use="optional"/>
-    <!-- C++/CLI event -->
-    <xsd:attribute name="add" type="DoxBool" use="optional"/>
-    <xsd:attribute name="remove" type="DoxBool" use="optional"/>
-    <xsd:attribute name="raise" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 protocol method -->
-    <xsd:attribute name="optional" type="DoxBool" use="optional"/>
-    <xsd:attribute name="required" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 property accessor -->
-    <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/>
-    <!-- UNO IDL -->
-    <xsd:attribute name="attribute" type="DoxBool" use="optional"/>
-    <xsd:attribute name="property" type="DoxBool" use="optional"/>
-    <xsd:attribute name="readonly" type="DoxBool" use="optional"/>
-    <xsd:attribute name="bound" type="DoxBool" use="optional"/>
-    <xsd:attribute name="removable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="contrained" type="DoxBool" use="optional"/>
-    <xsd:attribute name="transient" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/>
-
-  </xsd:complexType>
-
-  <xsd:complexType name="descriptionType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" minOccurs="0"/>          
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="enumvalueType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="name" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="templateparamlistType">
-    <xsd:sequence>
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="paramType">
-    <xsd:sequence>
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="declname" minOccurs="0" />
-      <xsd:element name="defname" minOccurs="0" />
-      <xsd:element name="array" minOccurs="0" />
-      <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="linkedTextType" mixed="true">
-    <xsd:sequence>
-    <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="graphType">
-    <xsd:sequence>
-      <xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="nodeType">
-    <xsd:sequence>
-      <xsd:element name="label" />
-      <xsd:element name="link" type="linkType" minOccurs="0" />
-      <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="childnodeType">
-    <xsd:sequence>
-      <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="relation" type="DoxGraphRelation" />
-  </xsd:complexType>
-
-  <xsd:complexType name="linkType">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="external" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listingType">
-    <xsd:sequence>
-      <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="codelineType">
-    <xsd:sequence>
-      <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="lineno" type="xsd:integer" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="refkind" type="DoxRefKind" />
-    <xsd:attribute name="external" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="highlightType" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="sp" />
-      <xsd:element name="ref" type="refTextType" />
-    </xsd:choice>
-    <xsd:attribute name="class" type="DoxHighlightClass" />
-  </xsd:complexType>
-
-  <xsd:complexType name="referenceType" mixed="true">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="compoundref" type="xsd:string" use="optional" />
-    <xsd:attribute name="startline" type="xsd:integer" />
-    <xsd:attribute name="endline" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="locationType">
-    <xsd:attribute name="file" type="xsd:string" />
-    <xsd:attribute name="line" type="xsd:integer" />
-    <xsd:attribute name="column" type="xsd:integer" use="optional"/>
-    <xsd:attribute name="bodyfile" type="xsd:string" />
-    <xsd:attribute name="bodystart" type="xsd:integer" />
-    <xsd:attribute name="bodyend" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  <xsd:group name="docTitleCmdGroup">
-    <xsd:choice>
-      <xsd:element name="ulink" type="docURLLink" />
-      <xsd:element name="bold" type="docMarkupType" />
-      <xsd:element name="emphasis" type="docMarkupType" />
-      <xsd:element name="computeroutput" type="docMarkupType" />
-      <xsd:element name="subscript" type="docMarkupType" />
-      <xsd:element name="superscript" type="docMarkupType" />
-      <xsd:element name="center" type="docMarkupType" />
-      <xsd:element name="small" type="docMarkupType" />
-      <xsd:element name="htmlonly" type="xsd:string" />
-      <xsd:element name="manonly" type="xsd:string" />
-      <xsd:element name="xmlonly" type="xsd:string" />
-      <xsd:element name="rtfonly" type="xsd:string" />
-      <xsd:element name="latexonly" type="xsd:string" />
-      <xsd:element name="dot" type="xsd:string" />
-      <xsd:element name="plantuml" type="xsd:string" />
-      <xsd:element name="anchor" type="docAnchorType" />
-      <xsd:element name="formula" type="docFormulaType" />
-      <xsd:element name="ref" type="docRefTextType" />
-      <xsd:element name="nonbreakablespace" type="docEmptyType" />
-      <xsd:element name="iexcl" type="docEmptyType" />
-      <xsd:element name="cent" type="docEmptyType" />
-      <xsd:element name="pound" type="docEmptyType" />
-      <xsd:element name="curren" type="docEmptyType" />
-      <xsd:element name="yen" type="docEmptyType" />
-      <xsd:element name="brvbar" type="docEmptyType" />
-      <xsd:element name="sect" type="docEmptyType" />
-      <xsd:element name="umlaut" type="docEmptyType" />
-      <xsd:element name="copy" type="docEmptyType" />
-      <xsd:element name="ordf" type="docEmptyType" />
-      <xsd:element name="laquo" type="docEmptyType" />
-      <xsd:element name="not" type="docEmptyType" />
-      <xsd:element name="shy" type="docEmptyType" />
-      <xsd:element name="registered" type="docEmptyType" />
-      <xsd:element name="macr" type="docEmptyType" />
-      <xsd:element name="deg" type="docEmptyType" />
-      <xsd:element name="plusmn" type="docEmptyType" />
-      <xsd:element name="sup2" type="docEmptyType" />
-      <xsd:element name="sup3" type="docEmptyType" />
-      <xsd:element name="acute" type="docEmptyType" />
-      <xsd:element name="micro" type="docEmptyType" />
-      <xsd:element name="para" type="docEmptyType" />
-      <xsd:element name="middot" type="docEmptyType" />
-      <xsd:element name="cedil" type="docEmptyType" />
-      <xsd:element name="sup1" type="docEmptyType" />
-      <xsd:element name="ordm" type="docEmptyType" />
-      <xsd:element name="raquo" type="docEmptyType" />
-      <xsd:element name="frac14" type="docEmptyType" />
-      <xsd:element name="frac12" type="docEmptyType" />
-      <xsd:element name="frac34" type="docEmptyType" />
-      <xsd:element name="iquest" type="docEmptyType" />
-      <xsd:element name="Agrave" type="docEmptyType" />
-      <xsd:element name="Aacute" type="docEmptyType" />
-      <xsd:element name="Acirc" type="docEmptyType" />
-      <xsd:element name="Atilde" type="docEmptyType" />
-      <xsd:element name="Aumlaut" type="docEmptyType" />
-      <xsd:element name="Aring" type="docEmptyType" />
-      <xsd:element name="AElig" type="docEmptyType" />
-      <xsd:element name="Ccedil" type="docEmptyType" />
-      <xsd:element name="Egrave" type="docEmptyType" />
-      <xsd:element name="Eacute" type="docEmptyType" />
-      <xsd:element name="Ecirc" type="docEmptyType" />
-      <xsd:element name="Eumlaut" type="docEmptyType" />
-      <xsd:element name="Igrave" type="docEmptyType" />
-      <xsd:element name="Iacute" type="docEmptyType" />
-      <xsd:element name="Icirc" type="docEmptyType" />
-      <xsd:element name="Iumlaut" type="docEmptyType" />
-      <xsd:element name="ETH" type="docEmptyType" />
-      <xsd:element name="Ntilde" type="docEmptyType" />
-      <xsd:element name="Ograve" type="docEmptyType" />
-      <xsd:element name="Oacute" type="docEmptyType" />
-      <xsd:element name="Ocirc" type="docEmptyType" />
-      <xsd:element name="Otilde" type="docEmptyType" />
-      <xsd:element name="Oumlaut" type="docEmptyType" />
-      <xsd:element name="times" type="docEmptyType" />
-      <xsd:element name="Oslash" type="docEmptyType" />
-      <xsd:element name="Ugrave" type="docEmptyType" />
-      <xsd:element name="Uacute" type="docEmptyType" />
-      <xsd:element name="Ucirc" type="docEmptyType" />
-      <xsd:element name="Uumlaut" type="docEmptyType" />
-      <xsd:element name="Yacute" type="docEmptyType" />
-      <xsd:element name="THORN" type="docEmptyType" />
-      <xsd:element name="szlig" type="docEmptyType" />
-      <xsd:element name="agrave" type="docEmptyType" />
-      <xsd:element name="aacute" type="docEmptyType" />
-      <xsd:element name="acirc" type="docEmptyType" />
-      <xsd:element name="atilde" type="docEmptyType" />
-      <xsd:element name="aumlaut" type="docEmptyType" />
-      <xsd:element name="aring" type="docEmptyType" />
-      <xsd:element name="aelig" type="docEmptyType" />
-      <xsd:element name="ccedil" type="docEmptyType" />
-      <xsd:element name="egrave" type="docEmptyType" />
-      <xsd:element name="eacute" type="docEmptyType" />
-      <xsd:element name="ecirc" type="docEmptyType" />
-      <xsd:element name="eumlaut" type="docEmptyType" />
-      <xsd:element name="igrave" type="docEmptyType" />
-      <xsd:element name="iacute" type="docEmptyType" />
-      <xsd:element name="icirc" type="docEmptyType" />
-      <xsd:element name="iumlaut" type="docEmptyType" />
-      <xsd:element name="eth" type="docEmptyType" />
-      <xsd:element name="ntilde" type="docEmptyType" />
-      <xsd:element name="ograve" type="docEmptyType" />
-      <xsd:element name="oacute" type="docEmptyType" />
-      <xsd:element name="ocirc" type="docEmptyType" />
-      <xsd:element name="otilde" type="docEmptyType" />
-      <xsd:element name="oumlaut" type="docEmptyType" />
-      <xsd:element name="divide" type="docEmptyType" />
-      <xsd:element name="oslash" type="docEmptyType" />
-      <xsd:element name="ugrave" type="docEmptyType" />
-      <xsd:element name="uacute" type="docEmptyType" />
-      <xsd:element name="ucirc" type="docEmptyType" />
-      <xsd:element name="uumlaut" type="docEmptyType" />
-      <xsd:element name="yacute" type="docEmptyType" />
-      <xsd:element name="thorn" type="docEmptyType" />
-      <xsd:element name="yumlaut" type="docEmptyType" />
-      <xsd:element name="fnof" type="docEmptyType" />
-      <xsd:element name="Alpha" type="docEmptyType" />
-      <xsd:element name="Beta" type="docEmptyType" />
-      <xsd:element name="Gamma" type="docEmptyType" />
-      <xsd:element name="Delta" type="docEmptyType" />
-      <xsd:element name="Epsilon" type="docEmptyType" />
-      <xsd:element name="Zeta" type="docEmptyType" />
-      <xsd:element name="Eta" type="docEmptyType" />
-      <xsd:element name="Theta" type="docEmptyType" />
-      <xsd:element name="Iota" type="docEmptyType" />
-      <xsd:element name="Kappa" type="docEmptyType" />
-      <xsd:element name="Lambda" type="docEmptyType" />
-      <xsd:element name="Mu" type="docEmptyType" />
-      <xsd:element name="Nu" type="docEmptyType" />
-      <xsd:element name="Xi" type="docEmptyType" />
-      <xsd:element name="Omicron" type="docEmptyType" />
-      <xsd:element name="Pi" type="docEmptyType" />
-      <xsd:element name="Rho" type="docEmptyType" />
-      <xsd:element name="Sigma" type="docEmptyType" />
-      <xsd:element name="Tau" type="docEmptyType" />
-      <xsd:element name="Upsilon" type="docEmptyType" />
-      <xsd:element name="Phi" type="docEmptyType" />
-      <xsd:element name="Chi" type="docEmptyType" />
-      <xsd:element name="Psi" type="docEmptyType" />
-      <xsd:element name="Omega" type="docEmptyType" />
-      <xsd:element name="alpha" type="docEmptyType" />
-      <xsd:element name="beta" type="docEmptyType" />
-      <xsd:element name="gamma" type="docEmptyType" />
-      <xsd:element name="delta" type="docEmptyType" />
-      <xsd:element name="epsilon" type="docEmptyType" />
-      <xsd:element name="zeta" type="docEmptyType" />
-      <xsd:element name="eta" type="docEmptyType" />
-      <xsd:element name="theta" type="docEmptyType" />
-      <xsd:element name="iota" type="docEmptyType" />
-      <xsd:element name="kappa" type="docEmptyType" />
-      <xsd:element name="lambda" type="docEmptyType" />
-      <xsd:element name="mu" type="docEmptyType" />
-      <xsd:element name="nu" type="docEmptyType" />
-      <xsd:element name="xi" type="docEmptyType" />
-      <xsd:element name="omicron" type="docEmptyType" />
-      <xsd:element name="pi" type="docEmptyType" />
-      <xsd:element name="rho" type="docEmptyType" />
-      <xsd:element name="sigmaf" type="docEmptyType" />
-      <xsd:element name="sigma" type="docEmptyType" />
-      <xsd:element name="tau" type="docEmptyType" />
-      <xsd:element name="upsilon" type="docEmptyType" />
-      <xsd:element name="phi" type="docEmptyType" />
-      <xsd:element name="chi" type="docEmptyType" />
-      <xsd:element name="psi" type="docEmptyType" />
-      <xsd:element name="omega" type="docEmptyType" />
-      <xsd:element name="thetasym" type="docEmptyType" />
-      <xsd:element name="upsih" type="docEmptyType" />
-      <xsd:element name="piv" type="docEmptyType" />
-      <xsd:element name="bull" type="docEmptyType" />
-      <xsd:element name="hellip" type="docEmptyType" />
-      <xsd:element name="prime" type="docEmptyType" />
-      <xsd:element name="Prime" type="docEmptyType" />
-      <xsd:element name="oline" type="docEmptyType" />
-      <xsd:element name="frasl" type="docEmptyType" />
-      <xsd:element name="weierp" type="docEmptyType" />
-      <xsd:element name="image" type="docEmptyType" />
-      <xsd:element name="real" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-      <xsd:element name="alefsym" type="docEmptyType" />
-      <xsd:element name="larr" type="docEmptyType" />
-      <xsd:element name="uarr" type="docEmptyType" />
-      <xsd:element name="rarr" type="docEmptyType" />
-      <xsd:element name="darr" type="docEmptyType" />
-      <xsd:element name="harr" type="docEmptyType" />
-      <xsd:element name="crarr" type="docEmptyType" />
-      <xsd:element name="lArr" type="docEmptyType" />
-      <xsd:element name="uArr" type="docEmptyType" />
-      <xsd:element name="rArr" type="docEmptyType" />
-      <xsd:element name="dArr" type="docEmptyType" />
-      <xsd:element name="hArr" type="docEmptyType" />
-      <xsd:element name="forall" type="docEmptyType" />
-      <xsd:element name="part" type="docEmptyType" />
-      <xsd:element name="exist" type="docEmptyType" />
-      <xsd:element name="empty" type="docEmptyType" />
-      <xsd:element name="nabla" type="docEmptyType" />
-      <xsd:element name="isin" type="docEmptyType" />
-      <xsd:element name="notin" type="docEmptyType" />
-      <xsd:element name="ni" type="docEmptyType" />
-      <xsd:element name="prod" type="docEmptyType" />
-      <xsd:element name="sum" type="docEmptyType" />
-      <xsd:element name="minus" type="docEmptyType" />
-      <xsd:element name="lowast" type="docEmptyType" />
-      <xsd:element name="radic" type="docEmptyType" />
-      <xsd:element name="prop" type="docEmptyType" />
-      <xsd:element name="infin" type="docEmptyType" />
-      <xsd:element name="ang" type="docEmptyType" />
-      <xsd:element name="and" type="docEmptyType" />
-      <xsd:element name="or" type="docEmptyType" />
-      <xsd:element name="cap" type="docEmptyType" />
-      <xsd:element name="cup" type="docEmptyType" />
-      <xsd:element name="int" type="docEmptyType" />
-      <xsd:element name="there4" type="docEmptyType" />
-      <xsd:element name="sim" type="docEmptyType" />
-      <xsd:element name="cong" type="docEmptyType" />
-      <xsd:element name="asymp" type="docEmptyType" />
-      <xsd:element name="ne" type="docEmptyType" />
-      <xsd:element name="equiv" type="docEmptyType" />
-      <xsd:element name="le" type="docEmptyType" />
-      <xsd:element name="ge" type="docEmptyType" />
-      <xsd:element name="sub" type="docEmptyType" />
-      <xsd:element name="sup" type="docEmptyType" />
-      <xsd:element name="nsub" type="docEmptyType" />
-      <xsd:element name="sube" type="docEmptyType" />
-      <xsd:element name="supe" type="docEmptyType" />
-      <xsd:element name="oplus" type="docEmptyType" />
-      <xsd:element name="otimes" type="docEmptyType" />
-      <xsd:element name="perp" type="docEmptyType" />
-      <xsd:element name="sdot" type="docEmptyType" />
-      <xsd:element name="lceil" type="docEmptyType" />
-      <xsd:element name="rceil" type="docEmptyType" />
-      <xsd:element name="lfloor" type="docEmptyType" />
-      <xsd:element name="rfloor" type="docEmptyType" />
-      <xsd:element name="lang" type="docEmptyType" />
-      <xsd:element name="rang" type="docEmptyType" />
-      <xsd:element name="loz" type="docEmptyType" />
-      <xsd:element name="spades" type="docEmptyType" />
-      <xsd:element name="clubs" type="docEmptyType" />
-      <xsd:element name="hearts" type="docEmptyType" />
-      <xsd:element name="diams" type="docEmptyType" />
-      <xsd:element name="OElig" type="docEmptyType" />
-      <xsd:element name="oelig" type="docEmptyType" />
-      <xsd:element name="Scaron" type="docEmptyType" />
-      <xsd:element name="scaron" type="docEmptyType" />
-      <xsd:element name="Yumlaut" type="docEmptyType" />
-      <xsd:element name="circ" type="docEmptyType" />
-      <xsd:element name="tilde" type="docEmptyType" />
-      <xsd:element name="ensp" type="docEmptyType" />
-      <xsd:element name="emsp" type="docEmptyType" />
-      <xsd:element name="thinsp" type="docEmptyType" />
-      <xsd:element name="zwnj" type="docEmptyType" />
-      <xsd:element name="zwj" type="docEmptyType" />
-      <xsd:element name="lrm" type="docEmptyType" />
-      <xsd:element name="rlm" type="docEmptyType" />
-      <xsd:element name="ndash" type="docEmptyType" />
-      <xsd:element name="mdash" type="docEmptyType" />
-      <xsd:element name="lsquo" type="docEmptyType" />
-      <xsd:element name="rsquo" type="docEmptyType" />
-      <xsd:element name="sbquo" type="docEmptyType" />
-      <xsd:element name="ldquo" type="docEmptyType" />
-      <xsd:element name="rdquo" type="docEmptyType" />
-      <xsd:element name="bdquo" type="docEmptyType" />
-      <xsd:element name="dagger" type="docEmptyType" />
-      <xsd:element name="Dagger" type="docEmptyType" />
-      <xsd:element name="permil" type="docEmptyType" />
-      <xsd:element name="lsaquo" type="docEmptyType" />
-      <xsd:element name="rsaquo" type="docEmptyType" />
-      <xsd:element name="euro" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docTitleType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:group name="docCmdGroup">
-    <xsd:choice>
-      <xsd:group ref="docTitleCmdGroup"/>
-      <xsd:element name="linebreak" type="docEmptyType" />
-      <xsd:element name="hruler" type="docEmptyType" />
-      <xsd:element name="preformatted" type="docMarkupType" />
-      <xsd:element name="programlisting" type="listingType" />
-      <xsd:element name="verbatim" type="xsd:string" />
-      <xsd:element name="indexentry" type="docIndexEntryType" />
-      <xsd:element name="orderedlist" type="docListType" />
-      <xsd:element name="itemizedlist" type="docListType" />
-      <xsd:element name="simplesect" type="docSimpleSectType" />
-      <xsd:element name="title" type="docTitleType" />
-      <xsd:element name="variablelist" type="docVariableListType" />
-      <xsd:element name="table" type="docTableType" />
-      <xsd:element name="heading" type="docHeadingType" />
-      <xsd:element name="image" type="docImageType" />
-      <xsd:element name="dotfile" type="docFileType" />
-      <xsd:element name="mscfile" type="docFileType" />
-      <xsd:element name="diafile" type="docFileType" />
-      <xsd:element name="toclist" type="docTocListType" />
-      <xsd:element name="language" type="docLanguageType" />
-      <xsd:element name="parameterlist" type="docParamListType" />
-      <xsd:element name="xrefsect" type="docXRefSectType" />
-      <xsd:element name="copydoc" type="docCopyType" />
-      <xsd:element name="blockquote" type="docBlockQuoteType" />
-      <xsd:element name="parblock" type="docParBlockType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docParaType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docMarkupType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docURLLink" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="url" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docAnchorType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docFormulaType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docIndexEntryType">
-    <xsd:sequence>
-      <xsd:element name="primaryie" type="xsd:string" />
-      <xsd:element name="secondaryie" type="xsd:string" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListType">
-    <xsd:sequence>
-      <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListItemType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docSimpleSectType">
-    <xsd:sequence>
-      <xsd:element name="title" type="docTitleType" minOccurs="0" />
-      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
-        <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" />
-      </xsd:sequence>
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSimpleSectKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docVarListEntryType">
-    <xsd:sequence>
-      <xsd:element name="term" type="docTitleType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:group name="docVariableListGroup">
-    <xsd:sequence>
-      <xsd:element name="varlistentry" type="docVarListEntryType" />
-      <xsd:element name="listitem" type="docListItemType" />
-    </xsd:sequence>
-  </xsd:group>
-
-  <xsd:complexType name="docVariableListType">
-    <xsd:sequence>
-      <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docRefTextType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="kindref" type="DoxRefKind" />
-    <xsd:attribute name="external" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docTableType">
-    <xsd:sequence>
-      <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="rows" type="xsd:integer" />
-    <xsd:attribute name="cols" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docRowType">
-    <xsd:sequence>
-      <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEntryType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="thead" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docCaptionType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docHeadingType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
-  </xsd:complexType>
-
-  <xsd:complexType name="docImageType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="type" type="DoxImageKind" /> 
-    <xsd:attribute name="name" type="xsd:string" /> 
-    <xsd:attribute name="width" type="xsd:string" /> 
-    <xsd:attribute name="height" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docFileType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="name" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocItemType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocListType">
-    <xsd:sequence>
-      <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docLanguageType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="langid" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListType">
-    <xsd:sequence>
-      <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxParamListKind" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListItem">
-    <xsd:sequence>
-      <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parameterdescription" type="descriptionType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamNameList">
-    <xsd:sequence>
-      <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamName" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-    <xsd:attribute name="direction" type="DoxParamDir" use="optional" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docXRefSectType">
-    <xsd:sequence>
-      <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="xrefdescription" type="descriptionType" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docCopyType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="link" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docBlockQuoteType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParBlockType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEmptyType"/>
-
-  <!-- Simple types -->
-
-  <xsd:simpleType name="DoxBool">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes" />
-      <xsd:enumeration value="no" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxGraphRelation">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="include" />
-      <xsd:enumeration value="usage" />
-      <xsd:enumeration value="template-instance" />
-      <xsd:enumeration value="public-inheritance" />
-      <xsd:enumeration value="protected-inheritance" />
-      <xsd:enumeration value="private-inheritance" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxRefKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="compound" />
-      <xsd:enumeration value="member" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxMemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="variable" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="function" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="dcop" />
-      <xsd:enumeration value="slot" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="service" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxProtectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="public" />
-      <xsd:enumeration value="protected" />
-      <xsd:enumeration value="private" />
-      <xsd:enumeration value="package" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVirtualKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="non-virtual" />
-      <xsd:enumeration value="virtual" />
-      <xsd:enumeration value="pure-virtual" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class" />
-      <xsd:enumeration value="struct" />
-      <xsd:enumeration value="union" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="protocol" />
-      <xsd:enumeration value="category" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="singleton" />
-      <xsd:enumeration value="module" />
-      <xsd:enumeration value="type" />
-      <xsd:enumeration value="file" />
-      <xsd:enumeration value="namespace" />
-      <xsd:enumeration value="group" />
-      <xsd:enumeration value="page" />
-      <xsd:enumeration value="example" />
-      <xsd:enumeration value="dir" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="user-defined" />
-      <xsd:enumeration value="public-type" />
-      <xsd:enumeration value="public-func" />
-      <xsd:enumeration value="public-attrib" />
-      <xsd:enumeration value="public-slot" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="dcop-func" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="public-static-func" />
-      <xsd:enumeration value="public-static-attrib" />
-      <xsd:enumeration value="protected-type" />
-      <xsd:enumeration value="protected-func" />
-      <xsd:enumeration value="protected-attrib" />
-      <xsd:enumeration value="protected-slot" />
-      <xsd:enumeration value="protected-static-func" />
-      <xsd:enumeration value="protected-static-attrib" />
-      <xsd:enumeration value="package-type" />
-      <xsd:enumeration value="package-func" />
-      <xsd:enumeration value="package-attrib" />
-      <xsd:enumeration value="package-static-func" />
-      <xsd:enumeration value="package-static-attrib" />
-      <xsd:enumeration value="private-type" />
-      <xsd:enumeration value="private-func" />
-      <xsd:enumeration value="private-attrib" />
-      <xsd:enumeration value="private-slot" />
-      <xsd:enumeration value="private-static-func" />
-      <xsd:enumeration value="private-static-attrib" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="related" />
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="func" />
-      <xsd:enumeration value="var" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxHighlightClass">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="comment" />
-      <xsd:enumeration value="normal" />
-      <xsd:enumeration value="preprocessor" />
-      <xsd:enumeration value="keyword" />
-      <xsd:enumeration value="keywordtype" />
-      <xsd:enumeration value="keywordflow" />
-      <xsd:enumeration value="stringliteral" />
-      <xsd:enumeration value="charliteral" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSimpleSectKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="see" />
-      <xsd:enumeration value="return" />
-      <xsd:enumeration value="author" />
-      <xsd:enumeration value="authors" />
-      <xsd:enumeration value="version" />
-      <xsd:enumeration value="since" />
-      <xsd:enumeration value="date" />
-      <xsd:enumeration value="note" />
-      <xsd:enumeration value="warning" />
-      <xsd:enumeration value="pre" />
-      <xsd:enumeration value="post" />
-      <xsd:enumeration value="copyright" />
-      <xsd:enumeration value="invariant" />
-      <xsd:enumeration value="remark" />
-      <xsd:enumeration value="attention" />
-      <xsd:enumeration value="par" />
-      <xsd:enumeration value="rcs" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVersionNumber">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="\d+\.\d+.*" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxImageKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="html" />
-      <xsd:enumeration value="latex" />
-      <xsd:enumeration value="rtf" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamListKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="param" />
-      <xsd:enumeration value="retval" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="templateparam" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCharRange">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="[aeiouncAEIOUNC]" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamDir">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="in"/>
-      <xsd:enumeration value="out"/>
-      <xsd:enumeration value="inout"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxAccessor">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="retain"/>
-      <xsd:enumeration value="copy"/>
-      <xsd:enumeration value="assign"/>
-      <xsd:enumeration value="weak"/>
-      <xsd:enumeration value="strong"/>
-      <xsd:enumeration value="unretained"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/empty-project/xml/index.xml b/contrib/neo_doxygen/tests/empty-project/xml/index.xml
deleted file mode 100644 (file)
index cb503f1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.8">
-</doxygenindex>
diff --git a/contrib/neo_doxygen/tests/empty-project/xml/index.xsd b/contrib/neo_doxygen/tests/empty-project/xml/index.xsd
deleted file mode 100644 (file)
index d7ab2a9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygenindex" type="DoxygenType"/>
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence>
-      <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="version" type="xsd:string" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="CompoundType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-      <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="CompoundKind" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="MemberType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="MemberKind" use="required"/>
-  </xsd:complexType>
-  
-  <xsd:simpleType name="CompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class"/>
-      <xsd:enumeration value="struct"/>
-      <xsd:enumeration value="union"/>
-      <xsd:enumeration value="interface"/>
-      <xsd:enumeration value="protocol"/>
-      <xsd:enumeration value="category"/>
-      <xsd:enumeration value="exception"/>
-      <xsd:enumeration value="file"/>
-      <xsd:enumeration value="namespace"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="page"/>
-      <xsd:enumeration value="example"/>
-      <xsd:enumeration value="dir"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="MemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define"/>
-      <xsd:enumeration value="property"/>
-      <xsd:enumeration value="event"/>
-      <xsd:enumeration value="variable"/>
-      <xsd:enumeration value="typedef"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="enumvalue"/>
-      <xsd:enumeration value="function"/>
-      <xsd:enumeration value="signal"/>
-      <xsd:enumeration value="prototype"/>
-      <xsd:enumeration value="friend"/>
-      <xsd:enumeration value="dcop"/>
-      <xsd:enumeration value="slot"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/inner-class/Doxyfile b/contrib/neo_doxygen/tests/inner-class/Doxyfile
deleted file mode 100644 (file)
index 46601c2..0000000
+++ /dev/null
@@ -1,2381 +0,0 @@
-# Doxyfile 1.8.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "Test Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = YES
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = src
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.idl \
-                         *.ddl \
-                         *.odl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.cs \
-                         *.d \
-                         *.php \
-                         *.php4 \
-                         *.php5 \
-                         *.phtml \
-                         *.inc \
-                         *.m \
-                         *.markdown \
-                         *.md \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.for \
-                         *.tcl \
-                         *.vhd \
-                         *.vhdl \
-                         *.ucf \
-                         *.qsf \
-                         *.as \
-                         *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = NO
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra stylesheet files is of importance (e.g. the last
-# stylesheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = YES
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-PLANTUML_JAR_PATH      =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/contrib/neo_doxygen/tests/inner-class/README.md b/contrib/neo_doxygen/tests/inner-class/README.md
deleted file mode 100644 (file)
index 2a87fc7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains a dummy Java project for testing purposes.
-
-To regenerate the XML output located in `xml`, run `make`. If the `Makefile`
-does not exists, you can regenerate it by running `make bootstrap` in the parent
-directory.
diff --git a/contrib/neo_doxygen/tests/inner-class/src/OuterClass.java b/contrib/neo_doxygen/tests/inner-class/src/OuterClass.java
deleted file mode 100644 (file)
index e324e3e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * A class with an inner class.
- */
-public class OuterClass {
-       /**
-        * An instance (non-static) inner class.
-        */
-       public class InnerClass {}
-}
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/_outer_class_8java.xml b/contrib/neo_doxygen/tests/inner-class/xml/_outer_class_8java.xml
deleted file mode 100644 (file)
index 0a63600..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_outer_class_8java" kind="file">
-    <compoundname>OuterClass.java</compoundname>
-    <innerclass refid="class_outer_class" prot="public">OuterClass</innerclass>
-    <innerclass refid="class_outer_class_1_1_inner_class" prot="public">OuterClass::InnerClass</innerclass>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/OuterClass.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/class_outer_class.xml b/contrib/neo_doxygen/tests/inner-class/xml/class_outer_class.xml
deleted file mode 100644 (file)
index 1bd92a8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="class_outer_class" kind="class" prot="public">
-    <compoundname>OuterClass</compoundname>
-    <innerclass refid="class_outer_class_1_1_inner_class" prot="public">OuterClass::InnerClass</innerclass>
-    <briefdescription>
-<para>A class with an inner class. </para>    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/OuterClass.java" line="19" column="1" bodyfile="%SOURCE_DIRECTORY%/OuterClass.java" bodystart="19" bodyend="24"/>
-    <listofallmembers>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/class_outer_class_1_1_inner_class.xml b/contrib/neo_doxygen/tests/inner-class/xml/class_outer_class_1_1_inner_class.xml
deleted file mode 100644 (file)
index 570babb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="class_outer_class_1_1_inner_class" kind="class" prot="public">
-    <compoundname>OuterClass::InnerClass</compoundname>
-    <briefdescription>
-<para>An instance (non-static) inner class. </para>    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/OuterClass.java" line="23" column="1" bodyfile="%SOURCE_DIRECTORY%/OuterClass.java" bodystart="23" bodyend="23"/>
-    <listofallmembers>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/combine.xslt b/contrib/neo_doxygen/tests/inner-class/xml/combine.xslt
deleted file mode 100644 (file)
index c148ee4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- XSLT script to combine the generated output into a single file. 
-     If you have xsltproc you could use:
-     xsltproc combine.xslt index.xml >all.xml
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" version="1.0" indent="no" standalone="yes" />
-  <xsl:template match="/">
-    <doxygen version="{doxygenindex/@version}">
-      <!-- Load all doxgen generated xml files -->
-      <xsl:for-each select="doxygenindex/compound">
-        <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" />
-      </xsl:for-each>
-    </doxygen>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/compound.xsd b/contrib/neo_doxygen/tests/inner-class/xml/compound.xsd
deleted file mode 100644 (file)
index 86740f4..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygen" type="DoxygenType"/>
-
-  <!-- Complex types -->
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence maxOccurs="unbounded">
-      <xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="version" type="DoxVersionNumber" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compounddefType">
-    <xsd:sequence>
-      <xsd:element name="compoundname" type="xsd:string"/>
-      <xsd:element name="title" type="xsd:string" minOccurs="0" />
-      <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
-      <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="programlisting" type="listingType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" minOccurs="0" />
-      <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="kind" type="DoxCompoundKind" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="abstract" type="DoxBool" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listofallmembersType">
-    <xsd:sequence>
-      <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="memberRefType">
-    <xsd:sequence>
-      <xsd:element name="scope" />
-      <xsd:element name="name" />
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="virt" type="DoxVirtualKind" />
-    <xsd:attribute name="ambiguityscope" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compoundRefType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" use="optional" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" />
-        <xsd:attribute name="virt" type="DoxVirtualKind" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="reimplementType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="incType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="local" type="DoxBool" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refTextType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-       <xsd:attribute name="refid" type="xsd:string" />
-       <xsd:attribute name="kindref" type="DoxRefKind" />
-       <xsd:attribute name="external" type="xsd:string" use="optional"/>
-       <xsd:attribute name="tooltip" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="sectiondefType">
-    <xsd:sequence>
-      <xsd:element name="header" type="xsd:string" minOccurs="0" />
-      <xsd:element name="description" type="descriptionType" minOccurs="0" />
-      <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="memberdefType">
-    <xsd:sequence>
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="definition" minOccurs="0" />
-      <xsd:element name="argsstring" minOccurs="0" />
-      <xsd:element name="name" />
-      <xsd:element name="read" minOccurs="0" />
-      <xsd:element name="write" minOccurs="0" />
-      <xsd:element name="bitfield" minOccurs="0" />
-      <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" />
-      <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxMemberKind" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="static" type="DoxBool" />
-    <xsd:attribute name="const" type="DoxBool" use="optional"/>
-    <xsd:attribute name="explicit" type="DoxBool" use="optional"/>
-    <xsd:attribute name="inline" type="DoxBool" use="optional"/>
-    <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/>
-    <xsd:attribute name="volatile" type="DoxBool" use="optional"/>
-    <xsd:attribute name="mutable" type="DoxBool" use="optional"/>
-    <!-- Qt property -->
-    <xsd:attribute name="readable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="writable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI variable -->
-    <xsd:attribute name="initonly" type="DoxBool" use="optional"/>
-    <!-- C++/CLI and C# property -->
-    <xsd:attribute name="settable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="gettable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI function -->
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="new" type="DoxBool" use="optional"/>
-    <!-- C++/CLI event -->
-    <xsd:attribute name="add" type="DoxBool" use="optional"/>
-    <xsd:attribute name="remove" type="DoxBool" use="optional"/>
-    <xsd:attribute name="raise" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 protocol method -->
-    <xsd:attribute name="optional" type="DoxBool" use="optional"/>
-    <xsd:attribute name="required" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 property accessor -->
-    <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/>
-    <!-- UNO IDL -->
-    <xsd:attribute name="attribute" type="DoxBool" use="optional"/>
-    <xsd:attribute name="property" type="DoxBool" use="optional"/>
-    <xsd:attribute name="readonly" type="DoxBool" use="optional"/>
-    <xsd:attribute name="bound" type="DoxBool" use="optional"/>
-    <xsd:attribute name="removable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="contrained" type="DoxBool" use="optional"/>
-    <xsd:attribute name="transient" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/>
-
-  </xsd:complexType>
-
-  <xsd:complexType name="descriptionType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" minOccurs="0"/>          
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="enumvalueType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="name" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="templateparamlistType">
-    <xsd:sequence>
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="paramType">
-    <xsd:sequence>
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="declname" minOccurs="0" />
-      <xsd:element name="defname" minOccurs="0" />
-      <xsd:element name="array" minOccurs="0" />
-      <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="linkedTextType" mixed="true">
-    <xsd:sequence>
-    <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="graphType">
-    <xsd:sequence>
-      <xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="nodeType">
-    <xsd:sequence>
-      <xsd:element name="label" />
-      <xsd:element name="link" type="linkType" minOccurs="0" />
-      <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="childnodeType">
-    <xsd:sequence>
-      <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="relation" type="DoxGraphRelation" />
-  </xsd:complexType>
-
-  <xsd:complexType name="linkType">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="external" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listingType">
-    <xsd:sequence>
-      <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="codelineType">
-    <xsd:sequence>
-      <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="lineno" type="xsd:integer" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="refkind" type="DoxRefKind" />
-    <xsd:attribute name="external" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="highlightType" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="sp" />
-      <xsd:element name="ref" type="refTextType" />
-    </xsd:choice>
-    <xsd:attribute name="class" type="DoxHighlightClass" />
-  </xsd:complexType>
-
-  <xsd:complexType name="referenceType" mixed="true">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="compoundref" type="xsd:string" use="optional" />
-    <xsd:attribute name="startline" type="xsd:integer" />
-    <xsd:attribute name="endline" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="locationType">
-    <xsd:attribute name="file" type="xsd:string" />
-    <xsd:attribute name="line" type="xsd:integer" />
-    <xsd:attribute name="column" type="xsd:integer" use="optional"/>
-    <xsd:attribute name="bodyfile" type="xsd:string" />
-    <xsd:attribute name="bodystart" type="xsd:integer" />
-    <xsd:attribute name="bodyend" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  <xsd:group name="docTitleCmdGroup">
-    <xsd:choice>
-      <xsd:element name="ulink" type="docURLLink" />
-      <xsd:element name="bold" type="docMarkupType" />
-      <xsd:element name="emphasis" type="docMarkupType" />
-      <xsd:element name="computeroutput" type="docMarkupType" />
-      <xsd:element name="subscript" type="docMarkupType" />
-      <xsd:element name="superscript" type="docMarkupType" />
-      <xsd:element name="center" type="docMarkupType" />
-      <xsd:element name="small" type="docMarkupType" />
-      <xsd:element name="htmlonly" type="xsd:string" />
-      <xsd:element name="manonly" type="xsd:string" />
-      <xsd:element name="xmlonly" type="xsd:string" />
-      <xsd:element name="rtfonly" type="xsd:string" />
-      <xsd:element name="latexonly" type="xsd:string" />
-      <xsd:element name="dot" type="xsd:string" />
-      <xsd:element name="plantuml" type="xsd:string" />
-      <xsd:element name="anchor" type="docAnchorType" />
-      <xsd:element name="formula" type="docFormulaType" />
-      <xsd:element name="ref" type="docRefTextType" />
-      <xsd:element name="nonbreakablespace" type="docEmptyType" />
-      <xsd:element name="iexcl" type="docEmptyType" />
-      <xsd:element name="cent" type="docEmptyType" />
-      <xsd:element name="pound" type="docEmptyType" />
-      <xsd:element name="curren" type="docEmptyType" />
-      <xsd:element name="yen" type="docEmptyType" />
-      <xsd:element name="brvbar" type="docEmptyType" />
-      <xsd:element name="sect" type="docEmptyType" />
-      <xsd:element name="umlaut" type="docEmptyType" />
-      <xsd:element name="copy" type="docEmptyType" />
-      <xsd:element name="ordf" type="docEmptyType" />
-      <xsd:element name="laquo" type="docEmptyType" />
-      <xsd:element name="not" type="docEmptyType" />
-      <xsd:element name="shy" type="docEmptyType" />
-      <xsd:element name="registered" type="docEmptyType" />
-      <xsd:element name="macr" type="docEmptyType" />
-      <xsd:element name="deg" type="docEmptyType" />
-      <xsd:element name="plusmn" type="docEmptyType" />
-      <xsd:element name="sup2" type="docEmptyType" />
-      <xsd:element name="sup3" type="docEmptyType" />
-      <xsd:element name="acute" type="docEmptyType" />
-      <xsd:element name="micro" type="docEmptyType" />
-      <xsd:element name="para" type="docEmptyType" />
-      <xsd:element name="middot" type="docEmptyType" />
-      <xsd:element name="cedil" type="docEmptyType" />
-      <xsd:element name="sup1" type="docEmptyType" />
-      <xsd:element name="ordm" type="docEmptyType" />
-      <xsd:element name="raquo" type="docEmptyType" />
-      <xsd:element name="frac14" type="docEmptyType" />
-      <xsd:element name="frac12" type="docEmptyType" />
-      <xsd:element name="frac34" type="docEmptyType" />
-      <xsd:element name="iquest" type="docEmptyType" />
-      <xsd:element name="Agrave" type="docEmptyType" />
-      <xsd:element name="Aacute" type="docEmptyType" />
-      <xsd:element name="Acirc" type="docEmptyType" />
-      <xsd:element name="Atilde" type="docEmptyType" />
-      <xsd:element name="Aumlaut" type="docEmptyType" />
-      <xsd:element name="Aring" type="docEmptyType" />
-      <xsd:element name="AElig" type="docEmptyType" />
-      <xsd:element name="Ccedil" type="docEmptyType" />
-      <xsd:element name="Egrave" type="docEmptyType" />
-      <xsd:element name="Eacute" type="docEmptyType" />
-      <xsd:element name="Ecirc" type="docEmptyType" />
-      <xsd:element name="Eumlaut" type="docEmptyType" />
-      <xsd:element name="Igrave" type="docEmptyType" />
-      <xsd:element name="Iacute" type="docEmptyType" />
-      <xsd:element name="Icirc" type="docEmptyType" />
-      <xsd:element name="Iumlaut" type="docEmptyType" />
-      <xsd:element name="ETH" type="docEmptyType" />
-      <xsd:element name="Ntilde" type="docEmptyType" />
-      <xsd:element name="Ograve" type="docEmptyType" />
-      <xsd:element name="Oacute" type="docEmptyType" />
-      <xsd:element name="Ocirc" type="docEmptyType" />
-      <xsd:element name="Otilde" type="docEmptyType" />
-      <xsd:element name="Oumlaut" type="docEmptyType" />
-      <xsd:element name="times" type="docEmptyType" />
-      <xsd:element name="Oslash" type="docEmptyType" />
-      <xsd:element name="Ugrave" type="docEmptyType" />
-      <xsd:element name="Uacute" type="docEmptyType" />
-      <xsd:element name="Ucirc" type="docEmptyType" />
-      <xsd:element name="Uumlaut" type="docEmptyType" />
-      <xsd:element name="Yacute" type="docEmptyType" />
-      <xsd:element name="THORN" type="docEmptyType" />
-      <xsd:element name="szlig" type="docEmptyType" />
-      <xsd:element name="agrave" type="docEmptyType" />
-      <xsd:element name="aacute" type="docEmptyType" />
-      <xsd:element name="acirc" type="docEmptyType" />
-      <xsd:element name="atilde" type="docEmptyType" />
-      <xsd:element name="aumlaut" type="docEmptyType" />
-      <xsd:element name="aring" type="docEmptyType" />
-      <xsd:element name="aelig" type="docEmptyType" />
-      <xsd:element name="ccedil" type="docEmptyType" />
-      <xsd:element name="egrave" type="docEmptyType" />
-      <xsd:element name="eacute" type="docEmptyType" />
-      <xsd:element name="ecirc" type="docEmptyType" />
-      <xsd:element name="eumlaut" type="docEmptyType" />
-      <xsd:element name="igrave" type="docEmptyType" />
-      <xsd:element name="iacute" type="docEmptyType" />
-      <xsd:element name="icirc" type="docEmptyType" />
-      <xsd:element name="iumlaut" type="docEmptyType" />
-      <xsd:element name="eth" type="docEmptyType" />
-      <xsd:element name="ntilde" type="docEmptyType" />
-      <xsd:element name="ograve" type="docEmptyType" />
-      <xsd:element name="oacute" type="docEmptyType" />
-      <xsd:element name="ocirc" type="docEmptyType" />
-      <xsd:element name="otilde" type="docEmptyType" />
-      <xsd:element name="oumlaut" type="docEmptyType" />
-      <xsd:element name="divide" type="docEmptyType" />
-      <xsd:element name="oslash" type="docEmptyType" />
-      <xsd:element name="ugrave" type="docEmptyType" />
-      <xsd:element name="uacute" type="docEmptyType" />
-      <xsd:element name="ucirc" type="docEmptyType" />
-      <xsd:element name="uumlaut" type="docEmptyType" />
-      <xsd:element name="yacute" type="docEmptyType" />
-      <xsd:element name="thorn" type="docEmptyType" />
-      <xsd:element name="yumlaut" type="docEmptyType" />
-      <xsd:element name="fnof" type="docEmptyType" />
-      <xsd:element name="Alpha" type="docEmptyType" />
-      <xsd:element name="Beta" type="docEmptyType" />
-      <xsd:element name="Gamma" type="docEmptyType" />
-      <xsd:element name="Delta" type="docEmptyType" />
-      <xsd:element name="Epsilon" type="docEmptyType" />
-      <xsd:element name="Zeta" type="docEmptyType" />
-      <xsd:element name="Eta" type="docEmptyType" />
-      <xsd:element name="Theta" type="docEmptyType" />
-      <xsd:element name="Iota" type="docEmptyType" />
-      <xsd:element name="Kappa" type="docEmptyType" />
-      <xsd:element name="Lambda" type="docEmptyType" />
-      <xsd:element name="Mu" type="docEmptyType" />
-      <xsd:element name="Nu" type="docEmptyType" />
-      <xsd:element name="Xi" type="docEmptyType" />
-      <xsd:element name="Omicron" type="docEmptyType" />
-      <xsd:element name="Pi" type="docEmptyType" />
-      <xsd:element name="Rho" type="docEmptyType" />
-      <xsd:element name="Sigma" type="docEmptyType" />
-      <xsd:element name="Tau" type="docEmptyType" />
-      <xsd:element name="Upsilon" type="docEmptyType" />
-      <xsd:element name="Phi" type="docEmptyType" />
-      <xsd:element name="Chi" type="docEmptyType" />
-      <xsd:element name="Psi" type="docEmptyType" />
-      <xsd:element name="Omega" type="docEmptyType" />
-      <xsd:element name="alpha" type="docEmptyType" />
-      <xsd:element name="beta" type="docEmptyType" />
-      <xsd:element name="gamma" type="docEmptyType" />
-      <xsd:element name="delta" type="docEmptyType" />
-      <xsd:element name="epsilon" type="docEmptyType" />
-      <xsd:element name="zeta" type="docEmptyType" />
-      <xsd:element name="eta" type="docEmptyType" />
-      <xsd:element name="theta" type="docEmptyType" />
-      <xsd:element name="iota" type="docEmptyType" />
-      <xsd:element name="kappa" type="docEmptyType" />
-      <xsd:element name="lambda" type="docEmptyType" />
-      <xsd:element name="mu" type="docEmptyType" />
-      <xsd:element name="nu" type="docEmptyType" />
-      <xsd:element name="xi" type="docEmptyType" />
-      <xsd:element name="omicron" type="docEmptyType" />
-      <xsd:element name="pi" type="docEmptyType" />
-      <xsd:element name="rho" type="docEmptyType" />
-      <xsd:element name="sigmaf" type="docEmptyType" />
-      <xsd:element name="sigma" type="docEmptyType" />
-      <xsd:element name="tau" type="docEmptyType" />
-      <xsd:element name="upsilon" type="docEmptyType" />
-      <xsd:element name="phi" type="docEmptyType" />
-      <xsd:element name="chi" type="docEmptyType" />
-      <xsd:element name="psi" type="docEmptyType" />
-      <xsd:element name="omega" type="docEmptyType" />
-      <xsd:element name="thetasym" type="docEmptyType" />
-      <xsd:element name="upsih" type="docEmptyType" />
-      <xsd:element name="piv" type="docEmptyType" />
-      <xsd:element name="bull" type="docEmptyType" />
-      <xsd:element name="hellip" type="docEmptyType" />
-      <xsd:element name="prime" type="docEmptyType" />
-      <xsd:element name="Prime" type="docEmptyType" />
-      <xsd:element name="oline" type="docEmptyType" />
-      <xsd:element name="frasl" type="docEmptyType" />
-      <xsd:element name="weierp" type="docEmptyType" />
-      <xsd:element name="image" type="docEmptyType" />
-      <xsd:element name="real" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-      <xsd:element name="alefsym" type="docEmptyType" />
-      <xsd:element name="larr" type="docEmptyType" />
-      <xsd:element name="uarr" type="docEmptyType" />
-      <xsd:element name="rarr" type="docEmptyType" />
-      <xsd:element name="darr" type="docEmptyType" />
-      <xsd:element name="harr" type="docEmptyType" />
-      <xsd:element name="crarr" type="docEmptyType" />
-      <xsd:element name="lArr" type="docEmptyType" />
-      <xsd:element name="uArr" type="docEmptyType" />
-      <xsd:element name="rArr" type="docEmptyType" />
-      <xsd:element name="dArr" type="docEmptyType" />
-      <xsd:element name="hArr" type="docEmptyType" />
-      <xsd:element name="forall" type="docEmptyType" />
-      <xsd:element name="part" type="docEmptyType" />
-      <xsd:element name="exist" type="docEmptyType" />
-      <xsd:element name="empty" type="docEmptyType" />
-      <xsd:element name="nabla" type="docEmptyType" />
-      <xsd:element name="isin" type="docEmptyType" />
-      <xsd:element name="notin" type="docEmptyType" />
-      <xsd:element name="ni" type="docEmptyType" />
-      <xsd:element name="prod" type="docEmptyType" />
-      <xsd:element name="sum" type="docEmptyType" />
-      <xsd:element name="minus" type="docEmptyType" />
-      <xsd:element name="lowast" type="docEmptyType" />
-      <xsd:element name="radic" type="docEmptyType" />
-      <xsd:element name="prop" type="docEmptyType" />
-      <xsd:element name="infin" type="docEmptyType" />
-      <xsd:element name="ang" type="docEmptyType" />
-      <xsd:element name="and" type="docEmptyType" />
-      <xsd:element name="or" type="docEmptyType" />
-      <xsd:element name="cap" type="docEmptyType" />
-      <xsd:element name="cup" type="docEmptyType" />
-      <xsd:element name="int" type="docEmptyType" />
-      <xsd:element name="there4" type="docEmptyType" />
-      <xsd:element name="sim" type="docEmptyType" />
-      <xsd:element name="cong" type="docEmptyType" />
-      <xsd:element name="asymp" type="docEmptyType" />
-      <xsd:element name="ne" type="docEmptyType" />
-      <xsd:element name="equiv" type="docEmptyType" />
-      <xsd:element name="le" type="docEmptyType" />
-      <xsd:element name="ge" type="docEmptyType" />
-      <xsd:element name="sub" type="docEmptyType" />
-      <xsd:element name="sup" type="docEmptyType" />
-      <xsd:element name="nsub" type="docEmptyType" />
-      <xsd:element name="sube" type="docEmptyType" />
-      <xsd:element name="supe" type="docEmptyType" />
-      <xsd:element name="oplus" type="docEmptyType" />
-      <xsd:element name="otimes" type="docEmptyType" />
-      <xsd:element name="perp" type="docEmptyType" />
-      <xsd:element name="sdot" type="docEmptyType" />
-      <xsd:element name="lceil" type="docEmptyType" />
-      <xsd:element name="rceil" type="docEmptyType" />
-      <xsd:element name="lfloor" type="docEmptyType" />
-      <xsd:element name="rfloor" type="docEmptyType" />
-      <xsd:element name="lang" type="docEmptyType" />
-      <xsd:element name="rang" type="docEmptyType" />
-      <xsd:element name="loz" type="docEmptyType" />
-      <xsd:element name="spades" type="docEmptyType" />
-      <xsd:element name="clubs" type="docEmptyType" />
-      <xsd:element name="hearts" type="docEmptyType" />
-      <xsd:element name="diams" type="docEmptyType" />
-      <xsd:element name="OElig" type="docEmptyType" />
-      <xsd:element name="oelig" type="docEmptyType" />
-      <xsd:element name="Scaron" type="docEmptyType" />
-      <xsd:element name="scaron" type="docEmptyType" />
-      <xsd:element name="Yumlaut" type="docEmptyType" />
-      <xsd:element name="circ" type="docEmptyType" />
-      <xsd:element name="tilde" type="docEmptyType" />
-      <xsd:element name="ensp" type="docEmptyType" />
-      <xsd:element name="emsp" type="docEmptyType" />
-      <xsd:element name="thinsp" type="docEmptyType" />
-      <xsd:element name="zwnj" type="docEmptyType" />
-      <xsd:element name="zwj" type="docEmptyType" />
-      <xsd:element name="lrm" type="docEmptyType" />
-      <xsd:element name="rlm" type="docEmptyType" />
-      <xsd:element name="ndash" type="docEmptyType" />
-      <xsd:element name="mdash" type="docEmptyType" />
-      <xsd:element name="lsquo" type="docEmptyType" />
-      <xsd:element name="rsquo" type="docEmptyType" />
-      <xsd:element name="sbquo" type="docEmptyType" />
-      <xsd:element name="ldquo" type="docEmptyType" />
-      <xsd:element name="rdquo" type="docEmptyType" />
-      <xsd:element name="bdquo" type="docEmptyType" />
-      <xsd:element name="dagger" type="docEmptyType" />
-      <xsd:element name="Dagger" type="docEmptyType" />
-      <xsd:element name="permil" type="docEmptyType" />
-      <xsd:element name="lsaquo" type="docEmptyType" />
-      <xsd:element name="rsaquo" type="docEmptyType" />
-      <xsd:element name="euro" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docTitleType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:group name="docCmdGroup">
-    <xsd:choice>
-      <xsd:group ref="docTitleCmdGroup"/>
-      <xsd:element name="linebreak" type="docEmptyType" />
-      <xsd:element name="hruler" type="docEmptyType" />
-      <xsd:element name="preformatted" type="docMarkupType" />
-      <xsd:element name="programlisting" type="listingType" />
-      <xsd:element name="verbatim" type="xsd:string" />
-      <xsd:element name="indexentry" type="docIndexEntryType" />
-      <xsd:element name="orderedlist" type="docListType" />
-      <xsd:element name="itemizedlist" type="docListType" />
-      <xsd:element name="simplesect" type="docSimpleSectType" />
-      <xsd:element name="title" type="docTitleType" />
-      <xsd:element name="variablelist" type="docVariableListType" />
-      <xsd:element name="table" type="docTableType" />
-      <xsd:element name="heading" type="docHeadingType" />
-      <xsd:element name="image" type="docImageType" />
-      <xsd:element name="dotfile" type="docFileType" />
-      <xsd:element name="mscfile" type="docFileType" />
-      <xsd:element name="diafile" type="docFileType" />
-      <xsd:element name="toclist" type="docTocListType" />
-      <xsd:element name="language" type="docLanguageType" />
-      <xsd:element name="parameterlist" type="docParamListType" />
-      <xsd:element name="xrefsect" type="docXRefSectType" />
-      <xsd:element name="copydoc" type="docCopyType" />
-      <xsd:element name="blockquote" type="docBlockQuoteType" />
-      <xsd:element name="parblock" type="docParBlockType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docParaType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docMarkupType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docURLLink" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="url" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docAnchorType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docFormulaType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docIndexEntryType">
-    <xsd:sequence>
-      <xsd:element name="primaryie" type="xsd:string" />
-      <xsd:element name="secondaryie" type="xsd:string" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListType">
-    <xsd:sequence>
-      <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListItemType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docSimpleSectType">
-    <xsd:sequence>
-      <xsd:element name="title" type="docTitleType" minOccurs="0" />
-      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
-        <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" />
-      </xsd:sequence>
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSimpleSectKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docVarListEntryType">
-    <xsd:sequence>
-      <xsd:element name="term" type="docTitleType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:group name="docVariableListGroup">
-    <xsd:sequence>
-      <xsd:element name="varlistentry" type="docVarListEntryType" />
-      <xsd:element name="listitem" type="docListItemType" />
-    </xsd:sequence>
-  </xsd:group>
-
-  <xsd:complexType name="docVariableListType">
-    <xsd:sequence>
-      <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docRefTextType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="kindref" type="DoxRefKind" />
-    <xsd:attribute name="external" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docTableType">
-    <xsd:sequence>
-      <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="rows" type="xsd:integer" />
-    <xsd:attribute name="cols" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docRowType">
-    <xsd:sequence>
-      <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEntryType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="thead" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docCaptionType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docHeadingType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
-  </xsd:complexType>
-
-  <xsd:complexType name="docImageType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="type" type="DoxImageKind" /> 
-    <xsd:attribute name="name" type="xsd:string" /> 
-    <xsd:attribute name="width" type="xsd:string" /> 
-    <xsd:attribute name="height" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docFileType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="name" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocItemType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocListType">
-    <xsd:sequence>
-      <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docLanguageType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="langid" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListType">
-    <xsd:sequence>
-      <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxParamListKind" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListItem">
-    <xsd:sequence>
-      <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parameterdescription" type="descriptionType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamNameList">
-    <xsd:sequence>
-      <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamName" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-    <xsd:attribute name="direction" type="DoxParamDir" use="optional" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docXRefSectType">
-    <xsd:sequence>
-      <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="xrefdescription" type="descriptionType" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docCopyType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="link" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docBlockQuoteType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParBlockType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEmptyType"/>
-
-  <!-- Simple types -->
-
-  <xsd:simpleType name="DoxBool">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes" />
-      <xsd:enumeration value="no" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxGraphRelation">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="include" />
-      <xsd:enumeration value="usage" />
-      <xsd:enumeration value="template-instance" />
-      <xsd:enumeration value="public-inheritance" />
-      <xsd:enumeration value="protected-inheritance" />
-      <xsd:enumeration value="private-inheritance" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxRefKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="compound" />
-      <xsd:enumeration value="member" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxMemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="variable" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="function" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="dcop" />
-      <xsd:enumeration value="slot" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="service" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxProtectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="public" />
-      <xsd:enumeration value="protected" />
-      <xsd:enumeration value="private" />
-      <xsd:enumeration value="package" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVirtualKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="non-virtual" />
-      <xsd:enumeration value="virtual" />
-      <xsd:enumeration value="pure-virtual" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class" />
-      <xsd:enumeration value="struct" />
-      <xsd:enumeration value="union" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="protocol" />
-      <xsd:enumeration value="category" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="singleton" />
-      <xsd:enumeration value="module" />
-      <xsd:enumeration value="type" />
-      <xsd:enumeration value="file" />
-      <xsd:enumeration value="namespace" />
-      <xsd:enumeration value="group" />
-      <xsd:enumeration value="page" />
-      <xsd:enumeration value="example" />
-      <xsd:enumeration value="dir" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="user-defined" />
-      <xsd:enumeration value="public-type" />
-      <xsd:enumeration value="public-func" />
-      <xsd:enumeration value="public-attrib" />
-      <xsd:enumeration value="public-slot" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="dcop-func" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="public-static-func" />
-      <xsd:enumeration value="public-static-attrib" />
-      <xsd:enumeration value="protected-type" />
-      <xsd:enumeration value="protected-func" />
-      <xsd:enumeration value="protected-attrib" />
-      <xsd:enumeration value="protected-slot" />
-      <xsd:enumeration value="protected-static-func" />
-      <xsd:enumeration value="protected-static-attrib" />
-      <xsd:enumeration value="package-type" />
-      <xsd:enumeration value="package-func" />
-      <xsd:enumeration value="package-attrib" />
-      <xsd:enumeration value="package-static-func" />
-      <xsd:enumeration value="package-static-attrib" />
-      <xsd:enumeration value="private-type" />
-      <xsd:enumeration value="private-func" />
-      <xsd:enumeration value="private-attrib" />
-      <xsd:enumeration value="private-slot" />
-      <xsd:enumeration value="private-static-func" />
-      <xsd:enumeration value="private-static-attrib" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="related" />
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="func" />
-      <xsd:enumeration value="var" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxHighlightClass">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="comment" />
-      <xsd:enumeration value="normal" />
-      <xsd:enumeration value="preprocessor" />
-      <xsd:enumeration value="keyword" />
-      <xsd:enumeration value="keywordtype" />
-      <xsd:enumeration value="keywordflow" />
-      <xsd:enumeration value="stringliteral" />
-      <xsd:enumeration value="charliteral" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSimpleSectKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="see" />
-      <xsd:enumeration value="return" />
-      <xsd:enumeration value="author" />
-      <xsd:enumeration value="authors" />
-      <xsd:enumeration value="version" />
-      <xsd:enumeration value="since" />
-      <xsd:enumeration value="date" />
-      <xsd:enumeration value="note" />
-      <xsd:enumeration value="warning" />
-      <xsd:enumeration value="pre" />
-      <xsd:enumeration value="post" />
-      <xsd:enumeration value="copyright" />
-      <xsd:enumeration value="invariant" />
-      <xsd:enumeration value="remark" />
-      <xsd:enumeration value="attention" />
-      <xsd:enumeration value="par" />
-      <xsd:enumeration value="rcs" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVersionNumber">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="\d+\.\d+.*" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxImageKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="html" />
-      <xsd:enumeration value="latex" />
-      <xsd:enumeration value="rtf" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamListKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="param" />
-      <xsd:enumeration value="retval" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="templateparam" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCharRange">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="[aeiouncAEIOUNC]" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamDir">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="in"/>
-      <xsd:enumeration value="out"/>
-      <xsd:enumeration value="inout"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxAccessor">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="retain"/>
-      <xsd:enumeration value="copy"/>
-      <xsd:enumeration value="assign"/>
-      <xsd:enumeration value="weak"/>
-      <xsd:enumeration value="strong"/>
-      <xsd:enumeration value="unretained"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml b/contrib/neo_doxygen/tests/inner-class/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml
deleted file mode 100644 (file)
index dfa6949..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir">
-    <compoundname>src</compoundname>
-    <innerfile refid="_outer_class_8java">OuterClass.java</innerfile>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/index.xml b/contrib/neo_doxygen/tests/inner-class/xml/index.xml
deleted file mode 100644 (file)
index e43d6e0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.8">
-  <compound refid="class_outer_class_1_1_inner_class" kind="class"><name>OuterClass::InnerClass</name>
-  </compound>
-  <compound refid="class_outer_class" kind="class"><name>OuterClass</name>
-  </compound>
-  <compound refid="_outer_class_8java" kind="file"><name>OuterClass.java</name>
-  </compound>
-  <compound refid="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir"><name>src</name>
-  </compound>
-</doxygenindex>
diff --git a/contrib/neo_doxygen/tests/inner-class/xml/index.xsd b/contrib/neo_doxygen/tests/inner-class/xml/index.xsd
deleted file mode 100644 (file)
index d7ab2a9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygenindex" type="DoxygenType"/>
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence>
-      <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="version" type="xsd:string" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="CompoundType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-      <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="CompoundKind" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="MemberType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="MemberKind" use="required"/>
-  </xsd:complexType>
-  
-  <xsd:simpleType name="CompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class"/>
-      <xsd:enumeration value="struct"/>
-      <xsd:enumeration value="union"/>
-      <xsd:enumeration value="interface"/>
-      <xsd:enumeration value="protocol"/>
-      <xsd:enumeration value="category"/>
-      <xsd:enumeration value="exception"/>
-      <xsd:enumeration value="file"/>
-      <xsd:enumeration value="namespace"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="page"/>
-      <xsd:enumeration value="example"/>
-      <xsd:enumeration value="dir"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="MemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define"/>
-      <xsd:enumeration value="property"/>
-      <xsd:enumeration value="event"/>
-      <xsd:enumeration value="variable"/>
-      <xsd:enumeration value="typedef"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="enumvalue"/>
-      <xsd:enumeration value="function"/>
-      <xsd:enumeration value="signal"/>
-      <xsd:enumeration value="prototype"/>
-      <xsd:enumeration value="friend"/>
-      <xsd:enumeration value="dcop"/>
-      <xsd:enumeration value="slot"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/java-project/Doxyfile b/contrib/neo_doxygen/tests/java-project/Doxyfile
deleted file mode 100644 (file)
index 46601c2..0000000
+++ /dev/null
@@ -1,2381 +0,0 @@
-# Doxyfile 1.8.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "Test Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = YES
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = src
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.idl \
-                         *.ddl \
-                         *.odl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.cs \
-                         *.d \
-                         *.php \
-                         *.php4 \
-                         *.php5 \
-                         *.phtml \
-                         *.inc \
-                         *.m \
-                         *.markdown \
-                         *.md \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.for \
-                         *.tcl \
-                         *.vhd \
-                         *.vhdl \
-                         *.ucf \
-                         *.qsf \
-                         *.as \
-                         *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = NO
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra stylesheet files is of importance (e.g. the last
-# stylesheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = YES
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-PLANTUML_JAR_PATH      =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/contrib/neo_doxygen/tests/java-project/README.md b/contrib/neo_doxygen/tests/java-project/README.md
deleted file mode 100644 (file)
index 2a87fc7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains a dummy Java project for testing purposes.
-
-To regenerate the XML output located in `xml`, run `make`. If the `Makefile`
-does not exists, you can regenerate it by running `make bootstrap` in the parent
-directory.
diff --git a/contrib/neo_doxygen/tests/java-project/src/org/example/foo/A.java b/contrib/neo_doxygen/tests/java-project/src/org/example/foo/A.java
deleted file mode 100644 (file)
index 4bbd973..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.example.foo;
-
-public abstract class A {
-       /**
-        * Does something...
-        */
-       public abstract boolean bar(int x, EmptyClass y);
-}
diff --git a/contrib/neo_doxygen/tests/java-project/src/org/example/foo/B.java b/contrib/neo_doxygen/tests/java-project/src/org/example/foo/B.java
deleted file mode 100644 (file)
index 0599e9d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.example.foo;
-
-public class B extends A implements C {
-       protected String qux = "quux";
-
-       public boolean bar(int x, EmptyClass y) {
-               return false;
-       }
-
-       /**
-        * Some overriden documentation.
-        */
-       public void baz() {}
-}
diff --git a/contrib/neo_doxygen/tests/java-project/src/org/example/foo/C.java b/contrib/neo_doxygen/tests/java-project/src/org/example/foo/C.java
deleted file mode 100644 (file)
index 42d95fa..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.example.foo;
-
-/**
- * An interface
- */
-public interface C {
-       /**
-        * “Answer to the Ultimate Question of Life, the Universe, and Everything.“
-        */
-       public static final long THE_ANSWER = 42L;
-
-       /**
-        * A function with implicit modifiers.
-        */
-       void baz();
-}
diff --git a/contrib/neo_doxygen/tests/java-project/src/org/example/foo/EmptyClass.java b/contrib/neo_doxygen/tests/java-project/src/org/example/foo/EmptyClass.java
deleted file mode 100644 (file)
index 87ed89e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.example.foo;
-
-/**
- * This class is empty and is only visible in this package.
- */
-class EmptyClass {}
diff --git a/contrib/neo_doxygen/tests/java-project/xml/_a_8java.xml b/contrib/neo_doxygen/tests/java-project/xml/_a_8java.xml
deleted file mode 100644 (file)
index 5ce035d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_a_8java" kind="file">
-    <compoundname>A.java</compoundname>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_a" prot="public">org::example::foo::A</innerclass>
-    <innernamespace refid="namespaceorg_1_1example_1_1foo">org::example::foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/A.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/_b_8java.xml b/contrib/neo_doxygen/tests/java-project/xml/_b_8java.xml
deleted file mode 100644 (file)
index 5d616b9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_b_8java" kind="file">
-    <compoundname>B.java</compoundname>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_b" prot="public">org::example::foo::B</innerclass>
-    <innernamespace refid="namespaceorg_1_1example_1_1foo">org::example::foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/B.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/_c_8java.xml b/contrib/neo_doxygen/tests/java-project/xml/_c_8java.xml
deleted file mode 100644 (file)
index d020a7a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_c_8java" kind="file">
-    <compoundname>C.java</compoundname>
-    <innerclass refid="interfaceorg_1_1example_1_1foo_1_1_c" prot="public">org::example::foo::C</innerclass>
-    <innernamespace refid="namespaceorg_1_1example_1_1foo">org::example::foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/C.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/_empty_class_8java.xml b/contrib/neo_doxygen/tests/java-project/xml/_empty_class_8java.xml
deleted file mode 100644 (file)
index 82e6562..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_empty_class_8java" kind="file">
-    <compoundname>EmptyClass.java</compoundname>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_empty_class" prot="package">org::example::foo::EmptyClass</innerclass>
-    <innernamespace refid="namespaceorg_1_1example_1_1foo">org::example::foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/EmptyClass.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_a.xml b/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_a.xml
deleted file mode 100644 (file)
index b380cf7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="classorg_1_1example_1_1foo_1_1_a" kind="class" prot="public" abstract="yes">
-    <compoundname>org::example::foo::A</compoundname>
-    <derivedcompoundref refid="classorg_1_1example_1_1foo_1_1_b" prot="public" virt="non-virtual">org.example.foo.B</derivedcompoundref>
-      <sectiondef kind="public-func">
-      <memberdef kind="function" id="classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
-        <type>abstract boolean</type>
-        <definition>abstract boolean org.example.foo.A.bar</definition>
-        <argsstring>(int x, EmptyClass y)</argsstring>
-        <name>bar</name>
-        <param>
-          <type>int</type>
-          <declname>x</declname>
-        </param>
-        <param>
-          <type>EmptyClass</type>
-          <declname>y</declname>
-        </param>
-        <briefdescription>
-<para>Does something... </para>        </briefdescription>
-        <detaileddescription>
-        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/A.java" line="22" column="1"/>
-      </memberdef>
-      </sectiondef>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <inheritancegraph>
-      <node id="0">
-        <label>org.example.foo.A</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_a"/>
-      </node>
-      <node id="1">
-        <label>org.example.foo.B</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_b"/>
-        <childnode refid="0" relation="public-inheritance">
-        </childnode>
-      </node>
-    </inheritancegraph>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/A.java" line="18" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/A.java" bodystart="18" bodyend="23"/>
-    <listofallmembers>
-      <member refid="classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852" prot="public" virt="non-virtual"><scope>org::example::foo::A</scope><name>bar</name></member>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_b.xml b/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_b.xml
deleted file mode 100644 (file)
index b01966b..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="classorg_1_1example_1_1foo_1_1_b" kind="class" prot="public">
-    <compoundname>org::example::foo::B</compoundname>
-    <basecompoundref refid="classorg_1_1example_1_1foo_1_1_a" prot="public" virt="non-virtual">org.example.foo.A</basecompoundref>
-    <basecompoundref refid="interfaceorg_1_1example_1_1foo_1_1_c" prot="public" virt="non-virtual">org.example.foo.C</basecompoundref>
-      <sectiondef kind="protected-attrib">
-      <memberdef kind="variable" id="classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87" prot="protected" static="no" mutable="no">
-        <type>String</type>
-        <definition>String org.example.foo.B.qux</definition>
-        <argsstring></argsstring>
-        <name>qux</name>
-        <initializer>= &quot;quux&quot;</initializer>
-        <briefdescription>
-        </briefdescription>
-        <detaileddescription>
-        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/B.java" line="19" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/B.java" bodystart="19" bodyend="-1"/>
-      </memberdef>
-      </sectiondef>
-      <sectiondef kind="public-func">
-      <memberdef kind="function" id="classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
-        <type>boolean</type>
-        <definition>boolean org.example.foo.B.bar</definition>
-        <argsstring>(int x, EmptyClass y)</argsstring>
-        <name>bar</name>
-        <param>
-          <type>int</type>
-          <declname>x</declname>
-        </param>
-        <param>
-          <type>EmptyClass</type>
-          <declname>y</declname>
-        </param>
-        <briefdescription>
-        </briefdescription>
-        <detaileddescription>
-        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/B.java" line="21" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/B.java" bodystart="21" bodyend="23"/>
-      </memberdef>
-      <memberdef kind="function" id="classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
-        <type>void</type>
-        <definition>void org.example.foo.B.baz</definition>
-        <argsstring>()</argsstring>
-        <name>baz</name>
-        <reimplements refid="interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b">baz</reimplements>
-        <briefdescription>
-<para>Some overriden documentation. </para>        </briefdescription>
-        <detaileddescription>
-        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/B.java" line="28" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/B.java" bodystart="28" bodyend="28"/>
-      </memberdef>
-      </sectiondef>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <inheritancegraph>
-      <node id="4">
-        <label>org.example.foo.A</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_a"/>
-      </node>
-      <node id="3">
-        <label>org.example.foo.B</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_b"/>
-        <childnode refid="4" relation="public-inheritance">
-        </childnode>
-        <childnode refid="5" relation="public-inheritance">
-        </childnode>
-      </node>
-      <node id="5">
-        <label>org.example.foo.C</label>
-        <link refid="interfaceorg_1_1example_1_1foo_1_1_c"/>
-      </node>
-    </inheritancegraph>
-    <collaborationgraph>
-      <node id="7">
-        <label>org.example.foo.A</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_a"/>
-      </node>
-      <node id="6">
-        <label>org.example.foo.B</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_b"/>
-        <childnode refid="7" relation="public-inheritance">
-        </childnode>
-        <childnode refid="8" relation="public-inheritance">
-        </childnode>
-      </node>
-      <node id="8">
-        <label>org.example.foo.C</label>
-        <link refid="interfaceorg_1_1example_1_1foo_1_1_c"/>
-      </node>
-    </collaborationgraph>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/B.java" line="18" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/B.java" bodystart="18" bodyend="29"/>
-    <listofallmembers>
-      <member refid="classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5" prot="public" virt="non-virtual"><scope>org::example::foo::B</scope><name>bar</name></member>
-      <member refid="classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9" prot="public" virt="non-virtual"><scope>org::example::foo::B</scope><name>baz</name></member>
-      <member refid="classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87" prot="protected" virt="non-virtual"><scope>org::example::foo::B</scope><name>qux</name></member>
-      <member refid="interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21" prot="public" virt="non-virtual"><scope>org::example::foo::B</scope><name>THE_ANSWER</name></member>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_empty_class.xml b/contrib/neo_doxygen/tests/java-project/xml/classorg_1_1example_1_1foo_1_1_empty_class.xml
deleted file mode 100644 (file)
index 04854de..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="classorg_1_1example_1_1foo_1_1_empty_class" kind="class" prot="package">
-    <compoundname>org::example::foo::EmptyClass</compoundname>
-    <briefdescription>
-<para>This class is empty and is only visible in this package. </para>    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/EmptyClass.java" line="21" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/EmptyClass.java" bodystart="21" bodyend="21"/>
-    <listofallmembers>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/combine.xslt b/contrib/neo_doxygen/tests/java-project/xml/combine.xslt
deleted file mode 100644 (file)
index c148ee4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- XSLT script to combine the generated output into a single file. 
-     If you have xsltproc you could use:
-     xsltproc combine.xslt index.xml >all.xml
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" version="1.0" indent="no" standalone="yes" />
-  <xsl:template match="/">
-    <doxygen version="{doxygenindex/@version}">
-      <!-- Load all doxgen generated xml files -->
-      <xsl:for-each select="doxygenindex/compound">
-        <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" />
-      </xsl:for-each>
-    </doxygen>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/compound.xsd b/contrib/neo_doxygen/tests/java-project/xml/compound.xsd
deleted file mode 100644 (file)
index 86740f4..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygen" type="DoxygenType"/>
-
-  <!-- Complex types -->
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence maxOccurs="unbounded">
-      <xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="version" type="DoxVersionNumber" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compounddefType">
-    <xsd:sequence>
-      <xsd:element name="compoundname" type="xsd:string"/>
-      <xsd:element name="title" type="xsd:string" minOccurs="0" />
-      <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
-      <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="programlisting" type="listingType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" minOccurs="0" />
-      <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="kind" type="DoxCompoundKind" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="abstract" type="DoxBool" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listofallmembersType">
-    <xsd:sequence>
-      <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="memberRefType">
-    <xsd:sequence>
-      <xsd:element name="scope" />
-      <xsd:element name="name" />
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="virt" type="DoxVirtualKind" />
-    <xsd:attribute name="ambiguityscope" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compoundRefType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" use="optional" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" />
-        <xsd:attribute name="virt" type="DoxVirtualKind" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="reimplementType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="incType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="local" type="DoxBool" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refTextType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-       <xsd:attribute name="refid" type="xsd:string" />
-       <xsd:attribute name="kindref" type="DoxRefKind" />
-       <xsd:attribute name="external" type="xsd:string" use="optional"/>
-       <xsd:attribute name="tooltip" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="sectiondefType">
-    <xsd:sequence>
-      <xsd:element name="header" type="xsd:string" minOccurs="0" />
-      <xsd:element name="description" type="descriptionType" minOccurs="0" />
-      <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="memberdefType">
-    <xsd:sequence>
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="definition" minOccurs="0" />
-      <xsd:element name="argsstring" minOccurs="0" />
-      <xsd:element name="name" />
-      <xsd:element name="read" minOccurs="0" />
-      <xsd:element name="write" minOccurs="0" />
-      <xsd:element name="bitfield" minOccurs="0" />
-      <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" />
-      <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxMemberKind" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="static" type="DoxBool" />
-    <xsd:attribute name="const" type="DoxBool" use="optional"/>
-    <xsd:attribute name="explicit" type="DoxBool" use="optional"/>
-    <xsd:attribute name="inline" type="DoxBool" use="optional"/>
-    <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/>
-    <xsd:attribute name="volatile" type="DoxBool" use="optional"/>
-    <xsd:attribute name="mutable" type="DoxBool" use="optional"/>
-    <!-- Qt property -->
-    <xsd:attribute name="readable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="writable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI variable -->
-    <xsd:attribute name="initonly" type="DoxBool" use="optional"/>
-    <!-- C++/CLI and C# property -->
-    <xsd:attribute name="settable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="gettable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI function -->
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="new" type="DoxBool" use="optional"/>
-    <!-- C++/CLI event -->
-    <xsd:attribute name="add" type="DoxBool" use="optional"/>
-    <xsd:attribute name="remove" type="DoxBool" use="optional"/>
-    <xsd:attribute name="raise" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 protocol method -->
-    <xsd:attribute name="optional" type="DoxBool" use="optional"/>
-    <xsd:attribute name="required" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 property accessor -->
-    <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/>
-    <!-- UNO IDL -->
-    <xsd:attribute name="attribute" type="DoxBool" use="optional"/>
-    <xsd:attribute name="property" type="DoxBool" use="optional"/>
-    <xsd:attribute name="readonly" type="DoxBool" use="optional"/>
-    <xsd:attribute name="bound" type="DoxBool" use="optional"/>
-    <xsd:attribute name="removable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="contrained" type="DoxBool" use="optional"/>
-    <xsd:attribute name="transient" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/>
-
-  </xsd:complexType>
-
-  <xsd:complexType name="descriptionType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" minOccurs="0"/>          
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="enumvalueType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="name" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="templateparamlistType">
-    <xsd:sequence>
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="paramType">
-    <xsd:sequence>
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="declname" minOccurs="0" />
-      <xsd:element name="defname" minOccurs="0" />
-      <xsd:element name="array" minOccurs="0" />
-      <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="linkedTextType" mixed="true">
-    <xsd:sequence>
-    <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="graphType">
-    <xsd:sequence>
-      <xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="nodeType">
-    <xsd:sequence>
-      <xsd:element name="label" />
-      <xsd:element name="link" type="linkType" minOccurs="0" />
-      <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="childnodeType">
-    <xsd:sequence>
-      <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="relation" type="DoxGraphRelation" />
-  </xsd:complexType>
-
-  <xsd:complexType name="linkType">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="external" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listingType">
-    <xsd:sequence>
-      <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="codelineType">
-    <xsd:sequence>
-      <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="lineno" type="xsd:integer" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="refkind" type="DoxRefKind" />
-    <xsd:attribute name="external" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="highlightType" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="sp" />
-      <xsd:element name="ref" type="refTextType" />
-    </xsd:choice>
-    <xsd:attribute name="class" type="DoxHighlightClass" />
-  </xsd:complexType>
-
-  <xsd:complexType name="referenceType" mixed="true">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="compoundref" type="xsd:string" use="optional" />
-    <xsd:attribute name="startline" type="xsd:integer" />
-    <xsd:attribute name="endline" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="locationType">
-    <xsd:attribute name="file" type="xsd:string" />
-    <xsd:attribute name="line" type="xsd:integer" />
-    <xsd:attribute name="column" type="xsd:integer" use="optional"/>
-    <xsd:attribute name="bodyfile" type="xsd:string" />
-    <xsd:attribute name="bodystart" type="xsd:integer" />
-    <xsd:attribute name="bodyend" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  <xsd:group name="docTitleCmdGroup">
-    <xsd:choice>
-      <xsd:element name="ulink" type="docURLLink" />
-      <xsd:element name="bold" type="docMarkupType" />
-      <xsd:element name="emphasis" type="docMarkupType" />
-      <xsd:element name="computeroutput" type="docMarkupType" />
-      <xsd:element name="subscript" type="docMarkupType" />
-      <xsd:element name="superscript" type="docMarkupType" />
-      <xsd:element name="center" type="docMarkupType" />
-      <xsd:element name="small" type="docMarkupType" />
-      <xsd:element name="htmlonly" type="xsd:string" />
-      <xsd:element name="manonly" type="xsd:string" />
-      <xsd:element name="xmlonly" type="xsd:string" />
-      <xsd:element name="rtfonly" type="xsd:string" />
-      <xsd:element name="latexonly" type="xsd:string" />
-      <xsd:element name="dot" type="xsd:string" />
-      <xsd:element name="plantuml" type="xsd:string" />
-      <xsd:element name="anchor" type="docAnchorType" />
-      <xsd:element name="formula" type="docFormulaType" />
-      <xsd:element name="ref" type="docRefTextType" />
-      <xsd:element name="nonbreakablespace" type="docEmptyType" />
-      <xsd:element name="iexcl" type="docEmptyType" />
-      <xsd:element name="cent" type="docEmptyType" />
-      <xsd:element name="pound" type="docEmptyType" />
-      <xsd:element name="curren" type="docEmptyType" />
-      <xsd:element name="yen" type="docEmptyType" />
-      <xsd:element name="brvbar" type="docEmptyType" />
-      <xsd:element name="sect" type="docEmptyType" />
-      <xsd:element name="umlaut" type="docEmptyType" />
-      <xsd:element name="copy" type="docEmptyType" />
-      <xsd:element name="ordf" type="docEmptyType" />
-      <xsd:element name="laquo" type="docEmptyType" />
-      <xsd:element name="not" type="docEmptyType" />
-      <xsd:element name="shy" type="docEmptyType" />
-      <xsd:element name="registered" type="docEmptyType" />
-      <xsd:element name="macr" type="docEmptyType" />
-      <xsd:element name="deg" type="docEmptyType" />
-      <xsd:element name="plusmn" type="docEmptyType" />
-      <xsd:element name="sup2" type="docEmptyType" />
-      <xsd:element name="sup3" type="docEmptyType" />
-      <xsd:element name="acute" type="docEmptyType" />
-      <xsd:element name="micro" type="docEmptyType" />
-      <xsd:element name="para" type="docEmptyType" />
-      <xsd:element name="middot" type="docEmptyType" />
-      <xsd:element name="cedil" type="docEmptyType" />
-      <xsd:element name="sup1" type="docEmptyType" />
-      <xsd:element name="ordm" type="docEmptyType" />
-      <xsd:element name="raquo" type="docEmptyType" />
-      <xsd:element name="frac14" type="docEmptyType" />
-      <xsd:element name="frac12" type="docEmptyType" />
-      <xsd:element name="frac34" type="docEmptyType" />
-      <xsd:element name="iquest" type="docEmptyType" />
-      <xsd:element name="Agrave" type="docEmptyType" />
-      <xsd:element name="Aacute" type="docEmptyType" />
-      <xsd:element name="Acirc" type="docEmptyType" />
-      <xsd:element name="Atilde" type="docEmptyType" />
-      <xsd:element name="Aumlaut" type="docEmptyType" />
-      <xsd:element name="Aring" type="docEmptyType" />
-      <xsd:element name="AElig" type="docEmptyType" />
-      <xsd:element name="Ccedil" type="docEmptyType" />
-      <xsd:element name="Egrave" type="docEmptyType" />
-      <xsd:element name="Eacute" type="docEmptyType" />
-      <xsd:element name="Ecirc" type="docEmptyType" />
-      <xsd:element name="Eumlaut" type="docEmptyType" />
-      <xsd:element name="Igrave" type="docEmptyType" />
-      <xsd:element name="Iacute" type="docEmptyType" />
-      <xsd:element name="Icirc" type="docEmptyType" />
-      <xsd:element name="Iumlaut" type="docEmptyType" />
-      <xsd:element name="ETH" type="docEmptyType" />
-      <xsd:element name="Ntilde" type="docEmptyType" />
-      <xsd:element name="Ograve" type="docEmptyType" />
-      <xsd:element name="Oacute" type="docEmptyType" />
-      <xsd:element name="Ocirc" type="docEmptyType" />
-      <xsd:element name="Otilde" type="docEmptyType" />
-      <xsd:element name="Oumlaut" type="docEmptyType" />
-      <xsd:element name="times" type="docEmptyType" />
-      <xsd:element name="Oslash" type="docEmptyType" />
-      <xsd:element name="Ugrave" type="docEmptyType" />
-      <xsd:element name="Uacute" type="docEmptyType" />
-      <xsd:element name="Ucirc" type="docEmptyType" />
-      <xsd:element name="Uumlaut" type="docEmptyType" />
-      <xsd:element name="Yacute" type="docEmptyType" />
-      <xsd:element name="THORN" type="docEmptyType" />
-      <xsd:element name="szlig" type="docEmptyType" />
-      <xsd:element name="agrave" type="docEmptyType" />
-      <xsd:element name="aacute" type="docEmptyType" />
-      <xsd:element name="acirc" type="docEmptyType" />
-      <xsd:element name="atilde" type="docEmptyType" />
-      <xsd:element name="aumlaut" type="docEmptyType" />
-      <xsd:element name="aring" type="docEmptyType" />
-      <xsd:element name="aelig" type="docEmptyType" />
-      <xsd:element name="ccedil" type="docEmptyType" />
-      <xsd:element name="egrave" type="docEmptyType" />
-      <xsd:element name="eacute" type="docEmptyType" />
-      <xsd:element name="ecirc" type="docEmptyType" />
-      <xsd:element name="eumlaut" type="docEmptyType" />
-      <xsd:element name="igrave" type="docEmptyType" />
-      <xsd:element name="iacute" type="docEmptyType" />
-      <xsd:element name="icirc" type="docEmptyType" />
-      <xsd:element name="iumlaut" type="docEmptyType" />
-      <xsd:element name="eth" type="docEmptyType" />
-      <xsd:element name="ntilde" type="docEmptyType" />
-      <xsd:element name="ograve" type="docEmptyType" />
-      <xsd:element name="oacute" type="docEmptyType" />
-      <xsd:element name="ocirc" type="docEmptyType" />
-      <xsd:element name="otilde" type="docEmptyType" />
-      <xsd:element name="oumlaut" type="docEmptyType" />
-      <xsd:element name="divide" type="docEmptyType" />
-      <xsd:element name="oslash" type="docEmptyType" />
-      <xsd:element name="ugrave" type="docEmptyType" />
-      <xsd:element name="uacute" type="docEmptyType" />
-      <xsd:element name="ucirc" type="docEmptyType" />
-      <xsd:element name="uumlaut" type="docEmptyType" />
-      <xsd:element name="yacute" type="docEmptyType" />
-      <xsd:element name="thorn" type="docEmptyType" />
-      <xsd:element name="yumlaut" type="docEmptyType" />
-      <xsd:element name="fnof" type="docEmptyType" />
-      <xsd:element name="Alpha" type="docEmptyType" />
-      <xsd:element name="Beta" type="docEmptyType" />
-      <xsd:element name="Gamma" type="docEmptyType" />
-      <xsd:element name="Delta" type="docEmptyType" />
-      <xsd:element name="Epsilon" type="docEmptyType" />
-      <xsd:element name="Zeta" type="docEmptyType" />
-      <xsd:element name="Eta" type="docEmptyType" />
-      <xsd:element name="Theta" type="docEmptyType" />
-      <xsd:element name="Iota" type="docEmptyType" />
-      <xsd:element name="Kappa" type="docEmptyType" />
-      <xsd:element name="Lambda" type="docEmptyType" />
-      <xsd:element name="Mu" type="docEmptyType" />
-      <xsd:element name="Nu" type="docEmptyType" />
-      <xsd:element name="Xi" type="docEmptyType" />
-      <xsd:element name="Omicron" type="docEmptyType" />
-      <xsd:element name="Pi" type="docEmptyType" />
-      <xsd:element name="Rho" type="docEmptyType" />
-      <xsd:element name="Sigma" type="docEmptyType" />
-      <xsd:element name="Tau" type="docEmptyType" />
-      <xsd:element name="Upsilon" type="docEmptyType" />
-      <xsd:element name="Phi" type="docEmptyType" />
-      <xsd:element name="Chi" type="docEmptyType" />
-      <xsd:element name="Psi" type="docEmptyType" />
-      <xsd:element name="Omega" type="docEmptyType" />
-      <xsd:element name="alpha" type="docEmptyType" />
-      <xsd:element name="beta" type="docEmptyType" />
-      <xsd:element name="gamma" type="docEmptyType" />
-      <xsd:element name="delta" type="docEmptyType" />
-      <xsd:element name="epsilon" type="docEmptyType" />
-      <xsd:element name="zeta" type="docEmptyType" />
-      <xsd:element name="eta" type="docEmptyType" />
-      <xsd:element name="theta" type="docEmptyType" />
-      <xsd:element name="iota" type="docEmptyType" />
-      <xsd:element name="kappa" type="docEmptyType" />
-      <xsd:element name="lambda" type="docEmptyType" />
-      <xsd:element name="mu" type="docEmptyType" />
-      <xsd:element name="nu" type="docEmptyType" />
-      <xsd:element name="xi" type="docEmptyType" />
-      <xsd:element name="omicron" type="docEmptyType" />
-      <xsd:element name="pi" type="docEmptyType" />
-      <xsd:element name="rho" type="docEmptyType" />
-      <xsd:element name="sigmaf" type="docEmptyType" />
-      <xsd:element name="sigma" type="docEmptyType" />
-      <xsd:element name="tau" type="docEmptyType" />
-      <xsd:element name="upsilon" type="docEmptyType" />
-      <xsd:element name="phi" type="docEmptyType" />
-      <xsd:element name="chi" type="docEmptyType" />
-      <xsd:element name="psi" type="docEmptyType" />
-      <xsd:element name="omega" type="docEmptyType" />
-      <xsd:element name="thetasym" type="docEmptyType" />
-      <xsd:element name="upsih" type="docEmptyType" />
-      <xsd:element name="piv" type="docEmptyType" />
-      <xsd:element name="bull" type="docEmptyType" />
-      <xsd:element name="hellip" type="docEmptyType" />
-      <xsd:element name="prime" type="docEmptyType" />
-      <xsd:element name="Prime" type="docEmptyType" />
-      <xsd:element name="oline" type="docEmptyType" />
-      <xsd:element name="frasl" type="docEmptyType" />
-      <xsd:element name="weierp" type="docEmptyType" />
-      <xsd:element name="image" type="docEmptyType" />
-      <xsd:element name="real" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-      <xsd:element name="alefsym" type="docEmptyType" />
-      <xsd:element name="larr" type="docEmptyType" />
-      <xsd:element name="uarr" type="docEmptyType" />
-      <xsd:element name="rarr" type="docEmptyType" />
-      <xsd:element name="darr" type="docEmptyType" />
-      <xsd:element name="harr" type="docEmptyType" />
-      <xsd:element name="crarr" type="docEmptyType" />
-      <xsd:element name="lArr" type="docEmptyType" />
-      <xsd:element name="uArr" type="docEmptyType" />
-      <xsd:element name="rArr" type="docEmptyType" />
-      <xsd:element name="dArr" type="docEmptyType" />
-      <xsd:element name="hArr" type="docEmptyType" />
-      <xsd:element name="forall" type="docEmptyType" />
-      <xsd:element name="part" type="docEmptyType" />
-      <xsd:element name="exist" type="docEmptyType" />
-      <xsd:element name="empty" type="docEmptyType" />
-      <xsd:element name="nabla" type="docEmptyType" />
-      <xsd:element name="isin" type="docEmptyType" />
-      <xsd:element name="notin" type="docEmptyType" />
-      <xsd:element name="ni" type="docEmptyType" />
-      <xsd:element name="prod" type="docEmptyType" />
-      <xsd:element name="sum" type="docEmptyType" />
-      <xsd:element name="minus" type="docEmptyType" />
-      <xsd:element name="lowast" type="docEmptyType" />
-      <xsd:element name="radic" type="docEmptyType" />
-      <xsd:element name="prop" type="docEmptyType" />
-      <xsd:element name="infin" type="docEmptyType" />
-      <xsd:element name="ang" type="docEmptyType" />
-      <xsd:element name="and" type="docEmptyType" />
-      <xsd:element name="or" type="docEmptyType" />
-      <xsd:element name="cap" type="docEmptyType" />
-      <xsd:element name="cup" type="docEmptyType" />
-      <xsd:element name="int" type="docEmptyType" />
-      <xsd:element name="there4" type="docEmptyType" />
-      <xsd:element name="sim" type="docEmptyType" />
-      <xsd:element name="cong" type="docEmptyType" />
-      <xsd:element name="asymp" type="docEmptyType" />
-      <xsd:element name="ne" type="docEmptyType" />
-      <xsd:element name="equiv" type="docEmptyType" />
-      <xsd:element name="le" type="docEmptyType" />
-      <xsd:element name="ge" type="docEmptyType" />
-      <xsd:element name="sub" type="docEmptyType" />
-      <xsd:element name="sup" type="docEmptyType" />
-      <xsd:element name="nsub" type="docEmptyType" />
-      <xsd:element name="sube" type="docEmptyType" />
-      <xsd:element name="supe" type="docEmptyType" />
-      <xsd:element name="oplus" type="docEmptyType" />
-      <xsd:element name="otimes" type="docEmptyType" />
-      <xsd:element name="perp" type="docEmptyType" />
-      <xsd:element name="sdot" type="docEmptyType" />
-      <xsd:element name="lceil" type="docEmptyType" />
-      <xsd:element name="rceil" type="docEmptyType" />
-      <xsd:element name="lfloor" type="docEmptyType" />
-      <xsd:element name="rfloor" type="docEmptyType" />
-      <xsd:element name="lang" type="docEmptyType" />
-      <xsd:element name="rang" type="docEmptyType" />
-      <xsd:element name="loz" type="docEmptyType" />
-      <xsd:element name="spades" type="docEmptyType" />
-      <xsd:element name="clubs" type="docEmptyType" />
-      <xsd:element name="hearts" type="docEmptyType" />
-      <xsd:element name="diams" type="docEmptyType" />
-      <xsd:element name="OElig" type="docEmptyType" />
-      <xsd:element name="oelig" type="docEmptyType" />
-      <xsd:element name="Scaron" type="docEmptyType" />
-      <xsd:element name="scaron" type="docEmptyType" />
-      <xsd:element name="Yumlaut" type="docEmptyType" />
-      <xsd:element name="circ" type="docEmptyType" />
-      <xsd:element name="tilde" type="docEmptyType" />
-      <xsd:element name="ensp" type="docEmptyType" />
-      <xsd:element name="emsp" type="docEmptyType" />
-      <xsd:element name="thinsp" type="docEmptyType" />
-      <xsd:element name="zwnj" type="docEmptyType" />
-      <xsd:element name="zwj" type="docEmptyType" />
-      <xsd:element name="lrm" type="docEmptyType" />
-      <xsd:element name="rlm" type="docEmptyType" />
-      <xsd:element name="ndash" type="docEmptyType" />
-      <xsd:element name="mdash" type="docEmptyType" />
-      <xsd:element name="lsquo" type="docEmptyType" />
-      <xsd:element name="rsquo" type="docEmptyType" />
-      <xsd:element name="sbquo" type="docEmptyType" />
-      <xsd:element name="ldquo" type="docEmptyType" />
-      <xsd:element name="rdquo" type="docEmptyType" />
-      <xsd:element name="bdquo" type="docEmptyType" />
-      <xsd:element name="dagger" type="docEmptyType" />
-      <xsd:element name="Dagger" type="docEmptyType" />
-      <xsd:element name="permil" type="docEmptyType" />
-      <xsd:element name="lsaquo" type="docEmptyType" />
-      <xsd:element name="rsaquo" type="docEmptyType" />
-      <xsd:element name="euro" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docTitleType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:group name="docCmdGroup">
-    <xsd:choice>
-      <xsd:group ref="docTitleCmdGroup"/>
-      <xsd:element name="linebreak" type="docEmptyType" />
-      <xsd:element name="hruler" type="docEmptyType" />
-      <xsd:element name="preformatted" type="docMarkupType" />
-      <xsd:element name="programlisting" type="listingType" />
-      <xsd:element name="verbatim" type="xsd:string" />
-      <xsd:element name="indexentry" type="docIndexEntryType" />
-      <xsd:element name="orderedlist" type="docListType" />
-      <xsd:element name="itemizedlist" type="docListType" />
-      <xsd:element name="simplesect" type="docSimpleSectType" />
-      <xsd:element name="title" type="docTitleType" />
-      <xsd:element name="variablelist" type="docVariableListType" />
-      <xsd:element name="table" type="docTableType" />
-      <xsd:element name="heading" type="docHeadingType" />
-      <xsd:element name="image" type="docImageType" />
-      <xsd:element name="dotfile" type="docFileType" />
-      <xsd:element name="mscfile" type="docFileType" />
-      <xsd:element name="diafile" type="docFileType" />
-      <xsd:element name="toclist" type="docTocListType" />
-      <xsd:element name="language" type="docLanguageType" />
-      <xsd:element name="parameterlist" type="docParamListType" />
-      <xsd:element name="xrefsect" type="docXRefSectType" />
-      <xsd:element name="copydoc" type="docCopyType" />
-      <xsd:element name="blockquote" type="docBlockQuoteType" />
-      <xsd:element name="parblock" type="docParBlockType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docParaType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docMarkupType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docURLLink" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="url" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docAnchorType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docFormulaType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docIndexEntryType">
-    <xsd:sequence>
-      <xsd:element name="primaryie" type="xsd:string" />
-      <xsd:element name="secondaryie" type="xsd:string" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListType">
-    <xsd:sequence>
-      <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListItemType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docSimpleSectType">
-    <xsd:sequence>
-      <xsd:element name="title" type="docTitleType" minOccurs="0" />
-      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
-        <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" />
-      </xsd:sequence>
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSimpleSectKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docVarListEntryType">
-    <xsd:sequence>
-      <xsd:element name="term" type="docTitleType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:group name="docVariableListGroup">
-    <xsd:sequence>
-      <xsd:element name="varlistentry" type="docVarListEntryType" />
-      <xsd:element name="listitem" type="docListItemType" />
-    </xsd:sequence>
-  </xsd:group>
-
-  <xsd:complexType name="docVariableListType">
-    <xsd:sequence>
-      <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docRefTextType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="kindref" type="DoxRefKind" />
-    <xsd:attribute name="external" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docTableType">
-    <xsd:sequence>
-      <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="rows" type="xsd:integer" />
-    <xsd:attribute name="cols" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docRowType">
-    <xsd:sequence>
-      <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEntryType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="thead" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docCaptionType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docHeadingType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
-  </xsd:complexType>
-
-  <xsd:complexType name="docImageType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="type" type="DoxImageKind" /> 
-    <xsd:attribute name="name" type="xsd:string" /> 
-    <xsd:attribute name="width" type="xsd:string" /> 
-    <xsd:attribute name="height" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docFileType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="name" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocItemType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocListType">
-    <xsd:sequence>
-      <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docLanguageType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="langid" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListType">
-    <xsd:sequence>
-      <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxParamListKind" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListItem">
-    <xsd:sequence>
-      <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parameterdescription" type="descriptionType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamNameList">
-    <xsd:sequence>
-      <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamName" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-    <xsd:attribute name="direction" type="DoxParamDir" use="optional" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docXRefSectType">
-    <xsd:sequence>
-      <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="xrefdescription" type="descriptionType" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docCopyType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="link" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docBlockQuoteType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParBlockType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEmptyType"/>
-
-  <!-- Simple types -->
-
-  <xsd:simpleType name="DoxBool">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes" />
-      <xsd:enumeration value="no" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxGraphRelation">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="include" />
-      <xsd:enumeration value="usage" />
-      <xsd:enumeration value="template-instance" />
-      <xsd:enumeration value="public-inheritance" />
-      <xsd:enumeration value="protected-inheritance" />
-      <xsd:enumeration value="private-inheritance" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxRefKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="compound" />
-      <xsd:enumeration value="member" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxMemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="variable" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="function" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="dcop" />
-      <xsd:enumeration value="slot" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="service" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxProtectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="public" />
-      <xsd:enumeration value="protected" />
-      <xsd:enumeration value="private" />
-      <xsd:enumeration value="package" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVirtualKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="non-virtual" />
-      <xsd:enumeration value="virtual" />
-      <xsd:enumeration value="pure-virtual" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class" />
-      <xsd:enumeration value="struct" />
-      <xsd:enumeration value="union" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="protocol" />
-      <xsd:enumeration value="category" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="singleton" />
-      <xsd:enumeration value="module" />
-      <xsd:enumeration value="type" />
-      <xsd:enumeration value="file" />
-      <xsd:enumeration value="namespace" />
-      <xsd:enumeration value="group" />
-      <xsd:enumeration value="page" />
-      <xsd:enumeration value="example" />
-      <xsd:enumeration value="dir" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="user-defined" />
-      <xsd:enumeration value="public-type" />
-      <xsd:enumeration value="public-func" />
-      <xsd:enumeration value="public-attrib" />
-      <xsd:enumeration value="public-slot" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="dcop-func" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="public-static-func" />
-      <xsd:enumeration value="public-static-attrib" />
-      <xsd:enumeration value="protected-type" />
-      <xsd:enumeration value="protected-func" />
-      <xsd:enumeration value="protected-attrib" />
-      <xsd:enumeration value="protected-slot" />
-      <xsd:enumeration value="protected-static-func" />
-      <xsd:enumeration value="protected-static-attrib" />
-      <xsd:enumeration value="package-type" />
-      <xsd:enumeration value="package-func" />
-      <xsd:enumeration value="package-attrib" />
-      <xsd:enumeration value="package-static-func" />
-      <xsd:enumeration value="package-static-attrib" />
-      <xsd:enumeration value="private-type" />
-      <xsd:enumeration value="private-func" />
-      <xsd:enumeration value="private-attrib" />
-      <xsd:enumeration value="private-slot" />
-      <xsd:enumeration value="private-static-func" />
-      <xsd:enumeration value="private-static-attrib" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="related" />
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="func" />
-      <xsd:enumeration value="var" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxHighlightClass">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="comment" />
-      <xsd:enumeration value="normal" />
-      <xsd:enumeration value="preprocessor" />
-      <xsd:enumeration value="keyword" />
-      <xsd:enumeration value="keywordtype" />
-      <xsd:enumeration value="keywordflow" />
-      <xsd:enumeration value="stringliteral" />
-      <xsd:enumeration value="charliteral" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSimpleSectKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="see" />
-      <xsd:enumeration value="return" />
-      <xsd:enumeration value="author" />
-      <xsd:enumeration value="authors" />
-      <xsd:enumeration value="version" />
-      <xsd:enumeration value="since" />
-      <xsd:enumeration value="date" />
-      <xsd:enumeration value="note" />
-      <xsd:enumeration value="warning" />
-      <xsd:enumeration value="pre" />
-      <xsd:enumeration value="post" />
-      <xsd:enumeration value="copyright" />
-      <xsd:enumeration value="invariant" />
-      <xsd:enumeration value="remark" />
-      <xsd:enumeration value="attention" />
-      <xsd:enumeration value="par" />
-      <xsd:enumeration value="rcs" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVersionNumber">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="\d+\.\d+.*" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxImageKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="html" />
-      <xsd:enumeration value="latex" />
-      <xsd:enumeration value="rtf" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamListKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="param" />
-      <xsd:enumeration value="retval" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="templateparam" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCharRange">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="[aeiouncAEIOUNC]" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamDir">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="in"/>
-      <xsd:enumeration value="out"/>
-      <xsd:enumeration value="inout"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxAccessor">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="retain"/>
-      <xsd:enumeration value="copy"/>
-      <xsd:enumeration value="assign"/>
-      <xsd:enumeration value="weak"/>
-      <xsd:enumeration value="strong"/>
-      <xsd:enumeration value="unretained"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/java-project/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml b/contrib/neo_doxygen/tests/java-project/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml
deleted file mode 100644 (file)
index 7113035..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir">
-    <compoundname>src</compoundname>
-    <innerdir refid="dir_b8e0663afee48cb679b74bbd21bdf843">src/org</innerdir>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/dir_8c35fc67c36f89d827afb23e8c52a418.xml b/contrib/neo_doxygen/tests/java-project/xml/dir_8c35fc67c36f89d827afb23e8c52a418.xml
deleted file mode 100644 (file)
index 3d720f8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_8c35fc67c36f89d827afb23e8c52a418" kind="dir">
-    <compoundname>src/org/example</compoundname>
-    <innerdir refid="dir_ad5d6582648a7bbb3a301939a41e6c0b">src/org/example/foo</innerdir>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/dir_ad5d6582648a7bbb3a301939a41e6c0b.xml b/contrib/neo_doxygen/tests/java-project/xml/dir_ad5d6582648a7bbb3a301939a41e6c0b.xml
deleted file mode 100644 (file)
index 5280bb0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_ad5d6582648a7bbb3a301939a41e6c0b" kind="dir">
-    <compoundname>src/org/example/foo</compoundname>
-    <innerfile refid="_a_8java">A.java</innerfile>
-    <innerfile refid="_b_8java">B.java</innerfile>
-    <innerfile refid="_c_8java">C.java</innerfile>
-    <innerfile refid="_empty_class_8java">EmptyClass.java</innerfile>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/dir_b8e0663afee48cb679b74bbd21bdf843.xml b/contrib/neo_doxygen/tests/java-project/xml/dir_b8e0663afee48cb679b74bbd21bdf843.xml
deleted file mode 100644 (file)
index 193e7cd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_b8e0663afee48cb679b74bbd21bdf843" kind="dir">
-    <compoundname>src/org</compoundname>
-    <innerdir refid="dir_8c35fc67c36f89d827afb23e8c52a418">src/org/example</innerdir>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/index.xml b/contrib/neo_doxygen/tests/java-project/xml/index.xml
deleted file mode 100644 (file)
index cf3ded8..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.8">
-  <compound refid="classorg_1_1example_1_1foo_1_1_a" kind="class"><name>org::example::foo::A</name>
-    <member refid="classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852" kind="function"><name>bar</name></member>
-  </compound>
-  <compound refid="classorg_1_1example_1_1foo_1_1_b" kind="class"><name>org::example::foo::B</name>
-    <member refid="classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87" kind="variable"><name>qux</name></member>
-    <member refid="classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5" kind="function"><name>bar</name></member>
-    <member refid="classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9" kind="function"><name>baz</name></member>
-  </compound>
-  <compound refid="interfaceorg_1_1example_1_1foo_1_1_c" kind="interface"><name>org::example::foo::C</name>
-    <member refid="interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21" kind="variable"><name>THE_ANSWER</name></member>
-    <member refid="interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b" kind="function"><name>baz</name></member>
-  </compound>
-  <compound refid="classorg_1_1example_1_1foo_1_1_empty_class" kind="class"><name>org::example::foo::EmptyClass</name>
-  </compound>
-  <compound refid="namespaceorg" kind="namespace"><name>org</name>
-  </compound>
-  <compound refid="namespaceorg_1_1example" kind="namespace"><name>org::example</name>
-  </compound>
-  <compound refid="namespaceorg_1_1example_1_1foo" kind="namespace"><name>org::example::foo</name>
-  </compound>
-  <compound refid="_a_8java" kind="file"><name>A.java</name>
-  </compound>
-  <compound refid="_b_8java" kind="file"><name>B.java</name>
-  </compound>
-  <compound refid="_c_8java" kind="file"><name>C.java</name>
-  </compound>
-  <compound refid="_empty_class_8java" kind="file"><name>EmptyClass.java</name>
-  </compound>
-  <compound refid="dir_8c35fc67c36f89d827afb23e8c52a418" kind="dir"><name>src/org/example</name>
-  </compound>
-  <compound refid="dir_ad5d6582648a7bbb3a301939a41e6c0b" kind="dir"><name>src/org/example/foo</name>
-  </compound>
-  <compound refid="dir_b8e0663afee48cb679b74bbd21bdf843" kind="dir"><name>src/org</name>
-  </compound>
-  <compound refid="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir"><name>src</name>
-  </compound>
-</doxygenindex>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/index.xsd b/contrib/neo_doxygen/tests/java-project/xml/index.xsd
deleted file mode 100644 (file)
index d7ab2a9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygenindex" type="DoxygenType"/>
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence>
-      <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="version" type="xsd:string" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="CompoundType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-      <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="CompoundKind" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="MemberType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="MemberKind" use="required"/>
-  </xsd:complexType>
-  
-  <xsd:simpleType name="CompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class"/>
-      <xsd:enumeration value="struct"/>
-      <xsd:enumeration value="union"/>
-      <xsd:enumeration value="interface"/>
-      <xsd:enumeration value="protocol"/>
-      <xsd:enumeration value="category"/>
-      <xsd:enumeration value="exception"/>
-      <xsd:enumeration value="file"/>
-      <xsd:enumeration value="namespace"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="page"/>
-      <xsd:enumeration value="example"/>
-      <xsd:enumeration value="dir"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="MemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define"/>
-      <xsd:enumeration value="property"/>
-      <xsd:enumeration value="event"/>
-      <xsd:enumeration value="variable"/>
-      <xsd:enumeration value="typedef"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="enumvalue"/>
-      <xsd:enumeration value="function"/>
-      <xsd:enumeration value="signal"/>
-      <xsd:enumeration value="prototype"/>
-      <xsd:enumeration value="friend"/>
-      <xsd:enumeration value="dcop"/>
-      <xsd:enumeration value="slot"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/java-project/xml/interfaceorg_1_1example_1_1foo_1_1_c.xml b/contrib/neo_doxygen/tests/java-project/xml/interfaceorg_1_1example_1_1foo_1_1_c.xml
deleted file mode 100644 (file)
index 09b577a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="interfaceorg_1_1example_1_1foo_1_1_c" kind="interface" prot="public">
-    <compoundname>org::example::foo::C</compoundname>
-    <derivedcompoundref refid="classorg_1_1example_1_1foo_1_1_b" prot="public" virt="non-virtual">org.example.foo.B</derivedcompoundref>
-      <sectiondef kind="public-static-attrib">
-      <memberdef kind="variable" id="interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21" prot="public" static="yes" mutable="no">
-        <type>final long</type>
-        <definition>final long org.example.foo.C.THE_ANSWER</definition>
-        <argsstring></argsstring>
-        <name>THE_ANSWER</name>
-        <initializer>= 42L</initializer>
-        <briefdescription>
-<para>“Answer to the Ultimate Question of Life, the Universe, and Everything. </para>        </briefdescription>
-        <detaileddescription>
-<para>“ </para>        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/C.java" line="25" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/C.java" bodystart="25" bodyend="-1"/>
-      </memberdef>
-      </sectiondef>
-      <sectiondef kind="public-func">
-      <memberdef kind="function" id="interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
-        <type>void</type>
-        <definition>void org.example.foo.C.baz</definition>
-        <argsstring>()</argsstring>
-        <name>baz</name>
-        <reimplementedby refid="classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9">baz</reimplementedby>
-        <briefdescription>
-<para><ref refid="classorg_1_1example_1_1foo_1_1_a" kindref="compound">A</ref> function with implicit modifiers. </para>        </briefdescription>
-        <detaileddescription>
-        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/org/example/foo/C.java" line="30" column="1"/>
-      </memberdef>
-      </sectiondef>
-    <briefdescription>
-<para>An interface. </para>    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <inheritancegraph>
-      <node id="10">
-        <label>org.example.foo.B</label>
-        <link refid="classorg_1_1example_1_1foo_1_1_b"/>
-        <childnode refid="9" relation="public-inheritance">
-        </childnode>
-      </node>
-      <node id="9">
-        <label>org.example.foo.C</label>
-        <link refid="interfaceorg_1_1example_1_1foo_1_1_c"/>
-      </node>
-    </inheritancegraph>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/C.java" line="21" column="1" bodyfile="%SOURCE_DIRECTORY%/org/example/foo/C.java" bodystart="21" bodyend="31"/>
-    <listofallmembers>
-      <member refid="interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b" prot="public" virt="non-virtual"><scope>org::example::foo::C</scope><name>baz</name></member>
-      <member refid="interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21" prot="public" virt="non-virtual"><scope>org::example::foo::C</scope><name>THE_ANSWER</name></member>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/namespaceorg.xml b/contrib/neo_doxygen/tests/java-project/xml/namespaceorg.xml
deleted file mode 100644 (file)
index 43d6207..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="namespaceorg" kind="namespace">
-    <compoundname>org</compoundname>
-    <innernamespace refid="namespaceorg_1_1example">org::example</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="[generated]" line="1" column="1"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example.xml b/contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example.xml
deleted file mode 100644 (file)
index ee8d878..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="namespaceorg_1_1example" kind="namespace">
-    <compoundname>org::example</compoundname>
-    <innernamespace refid="namespaceorg_1_1example_1_1foo">org::example::foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="[generated]" line="1" column="1"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example_1_1foo.xml b/contrib/neo_doxygen/tests/java-project/xml/namespaceorg_1_1example_1_1foo.xml
deleted file mode 100644 (file)
index a307c92..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="namespaceorg_1_1example_1_1foo" kind="namespace">
-    <compoundname>org::example::foo</compoundname>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_a" prot="public">org::example::foo::A</innerclass>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_b" prot="public">org::example::foo::B</innerclass>
-    <innerclass refid="interfaceorg_1_1example_1_1foo_1_1_c" prot="public">org::example::foo::C</innerclass>
-    <innerclass refid="classorg_1_1example_1_1foo_1_1_empty_class" prot="package">org::example::foo::EmptyClass</innerclass>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/org/example/foo/A.java" line="16" column="1"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/python-def/Doxyfile b/contrib/neo_doxygen/tests/python-def/Doxyfile
deleted file mode 100644 (file)
index bd06324..0000000
+++ /dev/null
@@ -1,2381 +0,0 @@
-# Doxyfile 1.8.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "Test Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = YES
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = src
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.idl \
-                         *.ddl \
-                         *.odl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.cs \
-                         *.d \
-                         *.php \
-                         *.php4 \
-                         *.php5 \
-                         *.phtml \
-                         *.inc \
-                         *.m \
-                         *.markdown \
-                         *.md \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.for \
-                         *.tcl \
-                         *.vhd \
-                         *.vhdl \
-                         *.ucf \
-                         *.qsf \
-                         *.as \
-                         *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = NO
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra stylesheet files is of importance (e.g. the last
-# stylesheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = YES
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-PLANTUML_JAR_PATH      =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/contrib/neo_doxygen/tests/python-def/README.md b/contrib/neo_doxygen/tests/python-def/README.md
deleted file mode 100644 (file)
index aa110bd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains a dummy Python project for testing purposes.
-
-To regenerate the XML output located in `xml`, run `make`. If the `Makefile`
-does not exists, you can regenerate it by running `make bootstrap` in the parent
-directory.
diff --git a/contrib/neo_doxygen/tests/python-def/xml/combine.xslt b/contrib/neo_doxygen/tests/python-def/xml/combine.xslt
deleted file mode 100644 (file)
index c148ee4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- XSLT script to combine the generated output into a single file. 
-     If you have xsltproc you could use:
-     xsltproc combine.xslt index.xml >all.xml
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" version="1.0" indent="no" standalone="yes" />
-  <xsl:template match="/">
-    <doxygen version="{doxygenindex/@version}">
-      <!-- Load all doxgen generated xml files -->
-      <xsl:for-each select="doxygenindex/compound">
-        <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" />
-      </xsl:for-each>
-    </doxygen>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/contrib/neo_doxygen/tests/python-def/xml/compound.xsd b/contrib/neo_doxygen/tests/python-def/xml/compound.xsd
deleted file mode 100644 (file)
index 86740f4..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygen" type="DoxygenType"/>
-
-  <!-- Complex types -->
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence maxOccurs="unbounded">
-      <xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="version" type="DoxVersionNumber" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compounddefType">
-    <xsd:sequence>
-      <xsd:element name="compoundname" type="xsd:string"/>
-      <xsd:element name="title" type="xsd:string" minOccurs="0" />
-      <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
-      <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="programlisting" type="listingType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" minOccurs="0" />
-      <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="kind" type="DoxCompoundKind" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="abstract" type="DoxBool" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listofallmembersType">
-    <xsd:sequence>
-      <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="memberRefType">
-    <xsd:sequence>
-      <xsd:element name="scope" />
-      <xsd:element name="name" />
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="virt" type="DoxVirtualKind" />
-    <xsd:attribute name="ambiguityscope" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compoundRefType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" use="optional" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" />
-        <xsd:attribute name="virt" type="DoxVirtualKind" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="reimplementType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="incType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="local" type="DoxBool" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refTextType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-       <xsd:attribute name="refid" type="xsd:string" />
-       <xsd:attribute name="kindref" type="DoxRefKind" />
-       <xsd:attribute name="external" type="xsd:string" use="optional"/>
-       <xsd:attribute name="tooltip" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="sectiondefType">
-    <xsd:sequence>
-      <xsd:element name="header" type="xsd:string" minOccurs="0" />
-      <xsd:element name="description" type="descriptionType" minOccurs="0" />
-      <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="memberdefType">
-    <xsd:sequence>
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="definition" minOccurs="0" />
-      <xsd:element name="argsstring" minOccurs="0" />
-      <xsd:element name="name" />
-      <xsd:element name="read" minOccurs="0" />
-      <xsd:element name="write" minOccurs="0" />
-      <xsd:element name="bitfield" minOccurs="0" />
-      <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" />
-      <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxMemberKind" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="static" type="DoxBool" />
-    <xsd:attribute name="const" type="DoxBool" use="optional"/>
-    <xsd:attribute name="explicit" type="DoxBool" use="optional"/>
-    <xsd:attribute name="inline" type="DoxBool" use="optional"/>
-    <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/>
-    <xsd:attribute name="volatile" type="DoxBool" use="optional"/>
-    <xsd:attribute name="mutable" type="DoxBool" use="optional"/>
-    <!-- Qt property -->
-    <xsd:attribute name="readable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="writable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI variable -->
-    <xsd:attribute name="initonly" type="DoxBool" use="optional"/>
-    <!-- C++/CLI and C# property -->
-    <xsd:attribute name="settable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="gettable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI function -->
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="new" type="DoxBool" use="optional"/>
-    <!-- C++/CLI event -->
-    <xsd:attribute name="add" type="DoxBool" use="optional"/>
-    <xsd:attribute name="remove" type="DoxBool" use="optional"/>
-    <xsd:attribute name="raise" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 protocol method -->
-    <xsd:attribute name="optional" type="DoxBool" use="optional"/>
-    <xsd:attribute name="required" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 property accessor -->
-    <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/>
-    <!-- UNO IDL -->
-    <xsd:attribute name="attribute" type="DoxBool" use="optional"/>
-    <xsd:attribute name="property" type="DoxBool" use="optional"/>
-    <xsd:attribute name="readonly" type="DoxBool" use="optional"/>
-    <xsd:attribute name="bound" type="DoxBool" use="optional"/>
-    <xsd:attribute name="removable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="contrained" type="DoxBool" use="optional"/>
-    <xsd:attribute name="transient" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/>
-
-  </xsd:complexType>
-
-  <xsd:complexType name="descriptionType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" minOccurs="0"/>          
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="enumvalueType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="name" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="templateparamlistType">
-    <xsd:sequence>
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="paramType">
-    <xsd:sequence>
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="declname" minOccurs="0" />
-      <xsd:element name="defname" minOccurs="0" />
-      <xsd:element name="array" minOccurs="0" />
-      <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="linkedTextType" mixed="true">
-    <xsd:sequence>
-    <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="graphType">
-    <xsd:sequence>
-      <xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="nodeType">
-    <xsd:sequence>
-      <xsd:element name="label" />
-      <xsd:element name="link" type="linkType" minOccurs="0" />
-      <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="childnodeType">
-    <xsd:sequence>
-      <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="relation" type="DoxGraphRelation" />
-  </xsd:complexType>
-
-  <xsd:complexType name="linkType">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="external" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listingType">
-    <xsd:sequence>
-      <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="codelineType">
-    <xsd:sequence>
-      <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="lineno" type="xsd:integer" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="refkind" type="DoxRefKind" />
-    <xsd:attribute name="external" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="highlightType" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="sp" />
-      <xsd:element name="ref" type="refTextType" />
-    </xsd:choice>
-    <xsd:attribute name="class" type="DoxHighlightClass" />
-  </xsd:complexType>
-
-  <xsd:complexType name="referenceType" mixed="true">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="compoundref" type="xsd:string" use="optional" />
-    <xsd:attribute name="startline" type="xsd:integer" />
-    <xsd:attribute name="endline" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="locationType">
-    <xsd:attribute name="file" type="xsd:string" />
-    <xsd:attribute name="line" type="xsd:integer" />
-    <xsd:attribute name="column" type="xsd:integer" use="optional"/>
-    <xsd:attribute name="bodyfile" type="xsd:string" />
-    <xsd:attribute name="bodystart" type="xsd:integer" />
-    <xsd:attribute name="bodyend" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  <xsd:group name="docTitleCmdGroup">
-    <xsd:choice>
-      <xsd:element name="ulink" type="docURLLink" />
-      <xsd:element name="bold" type="docMarkupType" />
-      <xsd:element name="emphasis" type="docMarkupType" />
-      <xsd:element name="computeroutput" type="docMarkupType" />
-      <xsd:element name="subscript" type="docMarkupType" />
-      <xsd:element name="superscript" type="docMarkupType" />
-      <xsd:element name="center" type="docMarkupType" />
-      <xsd:element name="small" type="docMarkupType" />
-      <xsd:element name="htmlonly" type="xsd:string" />
-      <xsd:element name="manonly" type="xsd:string" />
-      <xsd:element name="xmlonly" type="xsd:string" />
-      <xsd:element name="rtfonly" type="xsd:string" />
-      <xsd:element name="latexonly" type="xsd:string" />
-      <xsd:element name="dot" type="xsd:string" />
-      <xsd:element name="plantuml" type="xsd:string" />
-      <xsd:element name="anchor" type="docAnchorType" />
-      <xsd:element name="formula" type="docFormulaType" />
-      <xsd:element name="ref" type="docRefTextType" />
-      <xsd:element name="nonbreakablespace" type="docEmptyType" />
-      <xsd:element name="iexcl" type="docEmptyType" />
-      <xsd:element name="cent" type="docEmptyType" />
-      <xsd:element name="pound" type="docEmptyType" />
-      <xsd:element name="curren" type="docEmptyType" />
-      <xsd:element name="yen" type="docEmptyType" />
-      <xsd:element name="brvbar" type="docEmptyType" />
-      <xsd:element name="sect" type="docEmptyType" />
-      <xsd:element name="umlaut" type="docEmptyType" />
-      <xsd:element name="copy" type="docEmptyType" />
-      <xsd:element name="ordf" type="docEmptyType" />
-      <xsd:element name="laquo" type="docEmptyType" />
-      <xsd:element name="not" type="docEmptyType" />
-      <xsd:element name="shy" type="docEmptyType" />
-      <xsd:element name="registered" type="docEmptyType" />
-      <xsd:element name="macr" type="docEmptyType" />
-      <xsd:element name="deg" type="docEmptyType" />
-      <xsd:element name="plusmn" type="docEmptyType" />
-      <xsd:element name="sup2" type="docEmptyType" />
-      <xsd:element name="sup3" type="docEmptyType" />
-      <xsd:element name="acute" type="docEmptyType" />
-      <xsd:element name="micro" type="docEmptyType" />
-      <xsd:element name="para" type="docEmptyType" />
-      <xsd:element name="middot" type="docEmptyType" />
-      <xsd:element name="cedil" type="docEmptyType" />
-      <xsd:element name="sup1" type="docEmptyType" />
-      <xsd:element name="ordm" type="docEmptyType" />
-      <xsd:element name="raquo" type="docEmptyType" />
-      <xsd:element name="frac14" type="docEmptyType" />
-      <xsd:element name="frac12" type="docEmptyType" />
-      <xsd:element name="frac34" type="docEmptyType" />
-      <xsd:element name="iquest" type="docEmptyType" />
-      <xsd:element name="Agrave" type="docEmptyType" />
-      <xsd:element name="Aacute" type="docEmptyType" />
-      <xsd:element name="Acirc" type="docEmptyType" />
-      <xsd:element name="Atilde" type="docEmptyType" />
-      <xsd:element name="Aumlaut" type="docEmptyType" />
-      <xsd:element name="Aring" type="docEmptyType" />
-      <xsd:element name="AElig" type="docEmptyType" />
-      <xsd:element name="Ccedil" type="docEmptyType" />
-      <xsd:element name="Egrave" type="docEmptyType" />
-      <xsd:element name="Eacute" type="docEmptyType" />
-      <xsd:element name="Ecirc" type="docEmptyType" />
-      <xsd:element name="Eumlaut" type="docEmptyType" />
-      <xsd:element name="Igrave" type="docEmptyType" />
-      <xsd:element name="Iacute" type="docEmptyType" />
-      <xsd:element name="Icirc" type="docEmptyType" />
-      <xsd:element name="Iumlaut" type="docEmptyType" />
-      <xsd:element name="ETH" type="docEmptyType" />
-      <xsd:element name="Ntilde" type="docEmptyType" />
-      <xsd:element name="Ograve" type="docEmptyType" />
-      <xsd:element name="Oacute" type="docEmptyType" />
-      <xsd:element name="Ocirc" type="docEmptyType" />
-      <xsd:element name="Otilde" type="docEmptyType" />
-      <xsd:element name="Oumlaut" type="docEmptyType" />
-      <xsd:element name="times" type="docEmptyType" />
-      <xsd:element name="Oslash" type="docEmptyType" />
-      <xsd:element name="Ugrave" type="docEmptyType" />
-      <xsd:element name="Uacute" type="docEmptyType" />
-      <xsd:element name="Ucirc" type="docEmptyType" />
-      <xsd:element name="Uumlaut" type="docEmptyType" />
-      <xsd:element name="Yacute" type="docEmptyType" />
-      <xsd:element name="THORN" type="docEmptyType" />
-      <xsd:element name="szlig" type="docEmptyType" />
-      <xsd:element name="agrave" type="docEmptyType" />
-      <xsd:element name="aacute" type="docEmptyType" />
-      <xsd:element name="acirc" type="docEmptyType" />
-      <xsd:element name="atilde" type="docEmptyType" />
-      <xsd:element name="aumlaut" type="docEmptyType" />
-      <xsd:element name="aring" type="docEmptyType" />
-      <xsd:element name="aelig" type="docEmptyType" />
-      <xsd:element name="ccedil" type="docEmptyType" />
-      <xsd:element name="egrave" type="docEmptyType" />
-      <xsd:element name="eacute" type="docEmptyType" />
-      <xsd:element name="ecirc" type="docEmptyType" />
-      <xsd:element name="eumlaut" type="docEmptyType" />
-      <xsd:element name="igrave" type="docEmptyType" />
-      <xsd:element name="iacute" type="docEmptyType" />
-      <xsd:element name="icirc" type="docEmptyType" />
-      <xsd:element name="iumlaut" type="docEmptyType" />
-      <xsd:element name="eth" type="docEmptyType" />
-      <xsd:element name="ntilde" type="docEmptyType" />
-      <xsd:element name="ograve" type="docEmptyType" />
-      <xsd:element name="oacute" type="docEmptyType" />
-      <xsd:element name="ocirc" type="docEmptyType" />
-      <xsd:element name="otilde" type="docEmptyType" />
-      <xsd:element name="oumlaut" type="docEmptyType" />
-      <xsd:element name="divide" type="docEmptyType" />
-      <xsd:element name="oslash" type="docEmptyType" />
-      <xsd:element name="ugrave" type="docEmptyType" />
-      <xsd:element name="uacute" type="docEmptyType" />
-      <xsd:element name="ucirc" type="docEmptyType" />
-      <xsd:element name="uumlaut" type="docEmptyType" />
-      <xsd:element name="yacute" type="docEmptyType" />
-      <xsd:element name="thorn" type="docEmptyType" />
-      <xsd:element name="yumlaut" type="docEmptyType" />
-      <xsd:element name="fnof" type="docEmptyType" />
-      <xsd:element name="Alpha" type="docEmptyType" />
-      <xsd:element name="Beta" type="docEmptyType" />
-      <xsd:element name="Gamma" type="docEmptyType" />
-      <xsd:element name="Delta" type="docEmptyType" />
-      <xsd:element name="Epsilon" type="docEmptyType" />
-      <xsd:element name="Zeta" type="docEmptyType" />
-      <xsd:element name="Eta" type="docEmptyType" />
-      <xsd:element name="Theta" type="docEmptyType" />
-      <xsd:element name="Iota" type="docEmptyType" />
-      <xsd:element name="Kappa" type="docEmptyType" />
-      <xsd:element name="Lambda" type="docEmptyType" />
-      <xsd:element name="Mu" type="docEmptyType" />
-      <xsd:element name="Nu" type="docEmptyType" />
-      <xsd:element name="Xi" type="docEmptyType" />
-      <xsd:element name="Omicron" type="docEmptyType" />
-      <xsd:element name="Pi" type="docEmptyType" />
-      <xsd:element name="Rho" type="docEmptyType" />
-      <xsd:element name="Sigma" type="docEmptyType" />
-      <xsd:element name="Tau" type="docEmptyType" />
-      <xsd:element name="Upsilon" type="docEmptyType" />
-      <xsd:element name="Phi" type="docEmptyType" />
-      <xsd:element name="Chi" type="docEmptyType" />
-      <xsd:element name="Psi" type="docEmptyType" />
-      <xsd:element name="Omega" type="docEmptyType" />
-      <xsd:element name="alpha" type="docEmptyType" />
-      <xsd:element name="beta" type="docEmptyType" />
-      <xsd:element name="gamma" type="docEmptyType" />
-      <xsd:element name="delta" type="docEmptyType" />
-      <xsd:element name="epsilon" type="docEmptyType" />
-      <xsd:element name="zeta" type="docEmptyType" />
-      <xsd:element name="eta" type="docEmptyType" />
-      <xsd:element name="theta" type="docEmptyType" />
-      <xsd:element name="iota" type="docEmptyType" />
-      <xsd:element name="kappa" type="docEmptyType" />
-      <xsd:element name="lambda" type="docEmptyType" />
-      <xsd:element name="mu" type="docEmptyType" />
-      <xsd:element name="nu" type="docEmptyType" />
-      <xsd:element name="xi" type="docEmptyType" />
-      <xsd:element name="omicron" type="docEmptyType" />
-      <xsd:element name="pi" type="docEmptyType" />
-      <xsd:element name="rho" type="docEmptyType" />
-      <xsd:element name="sigmaf" type="docEmptyType" />
-      <xsd:element name="sigma" type="docEmptyType" />
-      <xsd:element name="tau" type="docEmptyType" />
-      <xsd:element name="upsilon" type="docEmptyType" />
-      <xsd:element name="phi" type="docEmptyType" />
-      <xsd:element name="chi" type="docEmptyType" />
-      <xsd:element name="psi" type="docEmptyType" />
-      <xsd:element name="omega" type="docEmptyType" />
-      <xsd:element name="thetasym" type="docEmptyType" />
-      <xsd:element name="upsih" type="docEmptyType" />
-      <xsd:element name="piv" type="docEmptyType" />
-      <xsd:element name="bull" type="docEmptyType" />
-      <xsd:element name="hellip" type="docEmptyType" />
-      <xsd:element name="prime" type="docEmptyType" />
-      <xsd:element name="Prime" type="docEmptyType" />
-      <xsd:element name="oline" type="docEmptyType" />
-      <xsd:element name="frasl" type="docEmptyType" />
-      <xsd:element name="weierp" type="docEmptyType" />
-      <xsd:element name="image" type="docEmptyType" />
-      <xsd:element name="real" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-      <xsd:element name="alefsym" type="docEmptyType" />
-      <xsd:element name="larr" type="docEmptyType" />
-      <xsd:element name="uarr" type="docEmptyType" />
-      <xsd:element name="rarr" type="docEmptyType" />
-      <xsd:element name="darr" type="docEmptyType" />
-      <xsd:element name="harr" type="docEmptyType" />
-      <xsd:element name="crarr" type="docEmptyType" />
-      <xsd:element name="lArr" type="docEmptyType" />
-      <xsd:element name="uArr" type="docEmptyType" />
-      <xsd:element name="rArr" type="docEmptyType" />
-      <xsd:element name="dArr" type="docEmptyType" />
-      <xsd:element name="hArr" type="docEmptyType" />
-      <xsd:element name="forall" type="docEmptyType" />
-      <xsd:element name="part" type="docEmptyType" />
-      <xsd:element name="exist" type="docEmptyType" />
-      <xsd:element name="empty" type="docEmptyType" />
-      <xsd:element name="nabla" type="docEmptyType" />
-      <xsd:element name="isin" type="docEmptyType" />
-      <xsd:element name="notin" type="docEmptyType" />
-      <xsd:element name="ni" type="docEmptyType" />
-      <xsd:element name="prod" type="docEmptyType" />
-      <xsd:element name="sum" type="docEmptyType" />
-      <xsd:element name="minus" type="docEmptyType" />
-      <xsd:element name="lowast" type="docEmptyType" />
-      <xsd:element name="radic" type="docEmptyType" />
-      <xsd:element name="prop" type="docEmptyType" />
-      <xsd:element name="infin" type="docEmptyType" />
-      <xsd:element name="ang" type="docEmptyType" />
-      <xsd:element name="and" type="docEmptyType" />
-      <xsd:element name="or" type="docEmptyType" />
-      <xsd:element name="cap" type="docEmptyType" />
-      <xsd:element name="cup" type="docEmptyType" />
-      <xsd:element name="int" type="docEmptyType" />
-      <xsd:element name="there4" type="docEmptyType" />
-      <xsd:element name="sim" type="docEmptyType" />
-      <xsd:element name="cong" type="docEmptyType" />
-      <xsd:element name="asymp" type="docEmptyType" />
-      <xsd:element name="ne" type="docEmptyType" />
-      <xsd:element name="equiv" type="docEmptyType" />
-      <xsd:element name="le" type="docEmptyType" />
-      <xsd:element name="ge" type="docEmptyType" />
-      <xsd:element name="sub" type="docEmptyType" />
-      <xsd:element name="sup" type="docEmptyType" />
-      <xsd:element name="nsub" type="docEmptyType" />
-      <xsd:element name="sube" type="docEmptyType" />
-      <xsd:element name="supe" type="docEmptyType" />
-      <xsd:element name="oplus" type="docEmptyType" />
-      <xsd:element name="otimes" type="docEmptyType" />
-      <xsd:element name="perp" type="docEmptyType" />
-      <xsd:element name="sdot" type="docEmptyType" />
-      <xsd:element name="lceil" type="docEmptyType" />
-      <xsd:element name="rceil" type="docEmptyType" />
-      <xsd:element name="lfloor" type="docEmptyType" />
-      <xsd:element name="rfloor" type="docEmptyType" />
-      <xsd:element name="lang" type="docEmptyType" />
-      <xsd:element name="rang" type="docEmptyType" />
-      <xsd:element name="loz" type="docEmptyType" />
-      <xsd:element name="spades" type="docEmptyType" />
-      <xsd:element name="clubs" type="docEmptyType" />
-      <xsd:element name="hearts" type="docEmptyType" />
-      <xsd:element name="diams" type="docEmptyType" />
-      <xsd:element name="OElig" type="docEmptyType" />
-      <xsd:element name="oelig" type="docEmptyType" />
-      <xsd:element name="Scaron" type="docEmptyType" />
-      <xsd:element name="scaron" type="docEmptyType" />
-      <xsd:element name="Yumlaut" type="docEmptyType" />
-      <xsd:element name="circ" type="docEmptyType" />
-      <xsd:element name="tilde" type="docEmptyType" />
-      <xsd:element name="ensp" type="docEmptyType" />
-      <xsd:element name="emsp" type="docEmptyType" />
-      <xsd:element name="thinsp" type="docEmptyType" />
-      <xsd:element name="zwnj" type="docEmptyType" />
-      <xsd:element name="zwj" type="docEmptyType" />
-      <xsd:element name="lrm" type="docEmptyType" />
-      <xsd:element name="rlm" type="docEmptyType" />
-      <xsd:element name="ndash" type="docEmptyType" />
-      <xsd:element name="mdash" type="docEmptyType" />
-      <xsd:element name="lsquo" type="docEmptyType" />
-      <xsd:element name="rsquo" type="docEmptyType" />
-      <xsd:element name="sbquo" type="docEmptyType" />
-      <xsd:element name="ldquo" type="docEmptyType" />
-      <xsd:element name="rdquo" type="docEmptyType" />
-      <xsd:element name="bdquo" type="docEmptyType" />
-      <xsd:element name="dagger" type="docEmptyType" />
-      <xsd:element name="Dagger" type="docEmptyType" />
-      <xsd:element name="permil" type="docEmptyType" />
-      <xsd:element name="lsaquo" type="docEmptyType" />
-      <xsd:element name="rsaquo" type="docEmptyType" />
-      <xsd:element name="euro" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docTitleType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:group name="docCmdGroup">
-    <xsd:choice>
-      <xsd:group ref="docTitleCmdGroup"/>
-      <xsd:element name="linebreak" type="docEmptyType" />
-      <xsd:element name="hruler" type="docEmptyType" />
-      <xsd:element name="preformatted" type="docMarkupType" />
-      <xsd:element name="programlisting" type="listingType" />
-      <xsd:element name="verbatim" type="xsd:string" />
-      <xsd:element name="indexentry" type="docIndexEntryType" />
-      <xsd:element name="orderedlist" type="docListType" />
-      <xsd:element name="itemizedlist" type="docListType" />
-      <xsd:element name="simplesect" type="docSimpleSectType" />
-      <xsd:element name="title" type="docTitleType" />
-      <xsd:element name="variablelist" type="docVariableListType" />
-      <xsd:element name="table" type="docTableType" />
-      <xsd:element name="heading" type="docHeadingType" />
-      <xsd:element name="image" type="docImageType" />
-      <xsd:element name="dotfile" type="docFileType" />
-      <xsd:element name="mscfile" type="docFileType" />
-      <xsd:element name="diafile" type="docFileType" />
-      <xsd:element name="toclist" type="docTocListType" />
-      <xsd:element name="language" type="docLanguageType" />
-      <xsd:element name="parameterlist" type="docParamListType" />
-      <xsd:element name="xrefsect" type="docXRefSectType" />
-      <xsd:element name="copydoc" type="docCopyType" />
-      <xsd:element name="blockquote" type="docBlockQuoteType" />
-      <xsd:element name="parblock" type="docParBlockType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docParaType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docMarkupType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docURLLink" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="url" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docAnchorType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docFormulaType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docIndexEntryType">
-    <xsd:sequence>
-      <xsd:element name="primaryie" type="xsd:string" />
-      <xsd:element name="secondaryie" type="xsd:string" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListType">
-    <xsd:sequence>
-      <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListItemType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docSimpleSectType">
-    <xsd:sequence>
-      <xsd:element name="title" type="docTitleType" minOccurs="0" />
-      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
-        <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" />
-      </xsd:sequence>
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSimpleSectKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docVarListEntryType">
-    <xsd:sequence>
-      <xsd:element name="term" type="docTitleType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:group name="docVariableListGroup">
-    <xsd:sequence>
-      <xsd:element name="varlistentry" type="docVarListEntryType" />
-      <xsd:element name="listitem" type="docListItemType" />
-    </xsd:sequence>
-  </xsd:group>
-
-  <xsd:complexType name="docVariableListType">
-    <xsd:sequence>
-      <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docRefTextType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="kindref" type="DoxRefKind" />
-    <xsd:attribute name="external" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docTableType">
-    <xsd:sequence>
-      <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="rows" type="xsd:integer" />
-    <xsd:attribute name="cols" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docRowType">
-    <xsd:sequence>
-      <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEntryType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="thead" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docCaptionType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docHeadingType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
-  </xsd:complexType>
-
-  <xsd:complexType name="docImageType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="type" type="DoxImageKind" /> 
-    <xsd:attribute name="name" type="xsd:string" /> 
-    <xsd:attribute name="width" type="xsd:string" /> 
-    <xsd:attribute name="height" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docFileType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="name" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocItemType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocListType">
-    <xsd:sequence>
-      <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docLanguageType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="langid" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListType">
-    <xsd:sequence>
-      <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxParamListKind" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListItem">
-    <xsd:sequence>
-      <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parameterdescription" type="descriptionType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamNameList">
-    <xsd:sequence>
-      <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamName" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-    <xsd:attribute name="direction" type="DoxParamDir" use="optional" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docXRefSectType">
-    <xsd:sequence>
-      <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="xrefdescription" type="descriptionType" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docCopyType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="link" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docBlockQuoteType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParBlockType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEmptyType"/>
-
-  <!-- Simple types -->
-
-  <xsd:simpleType name="DoxBool">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes" />
-      <xsd:enumeration value="no" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxGraphRelation">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="include" />
-      <xsd:enumeration value="usage" />
-      <xsd:enumeration value="template-instance" />
-      <xsd:enumeration value="public-inheritance" />
-      <xsd:enumeration value="protected-inheritance" />
-      <xsd:enumeration value="private-inheritance" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxRefKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="compound" />
-      <xsd:enumeration value="member" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxMemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="variable" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="function" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="dcop" />
-      <xsd:enumeration value="slot" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="service" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxProtectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="public" />
-      <xsd:enumeration value="protected" />
-      <xsd:enumeration value="private" />
-      <xsd:enumeration value="package" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVirtualKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="non-virtual" />
-      <xsd:enumeration value="virtual" />
-      <xsd:enumeration value="pure-virtual" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class" />
-      <xsd:enumeration value="struct" />
-      <xsd:enumeration value="union" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="protocol" />
-      <xsd:enumeration value="category" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="singleton" />
-      <xsd:enumeration value="module" />
-      <xsd:enumeration value="type" />
-      <xsd:enumeration value="file" />
-      <xsd:enumeration value="namespace" />
-      <xsd:enumeration value="group" />
-      <xsd:enumeration value="page" />
-      <xsd:enumeration value="example" />
-      <xsd:enumeration value="dir" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="user-defined" />
-      <xsd:enumeration value="public-type" />
-      <xsd:enumeration value="public-func" />
-      <xsd:enumeration value="public-attrib" />
-      <xsd:enumeration value="public-slot" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="dcop-func" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="public-static-func" />
-      <xsd:enumeration value="public-static-attrib" />
-      <xsd:enumeration value="protected-type" />
-      <xsd:enumeration value="protected-func" />
-      <xsd:enumeration value="protected-attrib" />
-      <xsd:enumeration value="protected-slot" />
-      <xsd:enumeration value="protected-static-func" />
-      <xsd:enumeration value="protected-static-attrib" />
-      <xsd:enumeration value="package-type" />
-      <xsd:enumeration value="package-func" />
-      <xsd:enumeration value="package-attrib" />
-      <xsd:enumeration value="package-static-func" />
-      <xsd:enumeration value="package-static-attrib" />
-      <xsd:enumeration value="private-type" />
-      <xsd:enumeration value="private-func" />
-      <xsd:enumeration value="private-attrib" />
-      <xsd:enumeration value="private-slot" />
-      <xsd:enumeration value="private-static-func" />
-      <xsd:enumeration value="private-static-attrib" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="related" />
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="func" />
-      <xsd:enumeration value="var" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxHighlightClass">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="comment" />
-      <xsd:enumeration value="normal" />
-      <xsd:enumeration value="preprocessor" />
-      <xsd:enumeration value="keyword" />
-      <xsd:enumeration value="keywordtype" />
-      <xsd:enumeration value="keywordflow" />
-      <xsd:enumeration value="stringliteral" />
-      <xsd:enumeration value="charliteral" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSimpleSectKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="see" />
-      <xsd:enumeration value="return" />
-      <xsd:enumeration value="author" />
-      <xsd:enumeration value="authors" />
-      <xsd:enumeration value="version" />
-      <xsd:enumeration value="since" />
-      <xsd:enumeration value="date" />
-      <xsd:enumeration value="note" />
-      <xsd:enumeration value="warning" />
-      <xsd:enumeration value="pre" />
-      <xsd:enumeration value="post" />
-      <xsd:enumeration value="copyright" />
-      <xsd:enumeration value="invariant" />
-      <xsd:enumeration value="remark" />
-      <xsd:enumeration value="attention" />
-      <xsd:enumeration value="par" />
-      <xsd:enumeration value="rcs" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVersionNumber">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="\d+\.\d+.*" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxImageKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="html" />
-      <xsd:enumeration value="latex" />
-      <xsd:enumeration value="rtf" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamListKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="param" />
-      <xsd:enumeration value="retval" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="templateparam" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCharRange">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="[aeiouncAEIOUNC]" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamDir">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="in"/>
-      <xsd:enumeration value="out"/>
-      <xsd:enumeration value="inout"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxAccessor">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="retain"/>
-      <xsd:enumeration value="copy"/>
-      <xsd:enumeration value="assign"/>
-      <xsd:enumeration value="weak"/>
-      <xsd:enumeration value="strong"/>
-      <xsd:enumeration value="unretained"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/python-def/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml b/contrib/neo_doxygen/tests/python-def/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml
deleted file mode 100644 (file)
index 538a5bc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir">
-    <compoundname>src</compoundname>
-    <innerfile refid="foo_8py">foo.py</innerfile>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/python-def/xml/foo_8py.xml b/contrib/neo_doxygen/tests/python-def/xml/foo_8py.xml
deleted file mode 100644 (file)
index e01105b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="foo_8py" kind="file">
-    <compoundname>foo.py</compoundname>
-    <innernamespace refid="namespacefoo">foo</innernamespace>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/foo.py"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/python-def/xml/index.xml b/contrib/neo_doxygen/tests/python-def/xml/index.xml
deleted file mode 100644 (file)
index be27789..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.8">
-  <compound refid="namespacefoo" kind="namespace"><name>foo</name>
-    <member refid="namespacefoo_1aab1e88a2212b202c20f3c9bd799a1ad4" kind="function"><name>bar</name></member>
-  </compound>
-  <compound refid="foo_8py" kind="file"><name>foo.py</name>
-  </compound>
-  <compound refid="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir"><name>src</name>
-  </compound>
-</doxygenindex>
diff --git a/contrib/neo_doxygen/tests/python-def/xml/index.xsd b/contrib/neo_doxygen/tests/python-def/xml/index.xsd
deleted file mode 100644 (file)
index d7ab2a9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygenindex" type="DoxygenType"/>
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence>
-      <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="version" type="xsd:string" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="CompoundType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-      <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="CompoundKind" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="MemberType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="MemberKind" use="required"/>
-  </xsd:complexType>
-  
-  <xsd:simpleType name="CompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class"/>
-      <xsd:enumeration value="struct"/>
-      <xsd:enumeration value="union"/>
-      <xsd:enumeration value="interface"/>
-      <xsd:enumeration value="protocol"/>
-      <xsd:enumeration value="category"/>
-      <xsd:enumeration value="exception"/>
-      <xsd:enumeration value="file"/>
-      <xsd:enumeration value="namespace"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="page"/>
-      <xsd:enumeration value="example"/>
-      <xsd:enumeration value="dir"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="MemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define"/>
-      <xsd:enumeration value="property"/>
-      <xsd:enumeration value="event"/>
-      <xsd:enumeration value="variable"/>
-      <xsd:enumeration value="typedef"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="enumvalue"/>
-      <xsd:enumeration value="function"/>
-      <xsd:enumeration value="signal"/>
-      <xsd:enumeration value="prototype"/>
-      <xsd:enumeration value="friend"/>
-      <xsd:enumeration value="dcop"/>
-      <xsd:enumeration value="slot"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/python-def/xml/namespacefoo.xml b/contrib/neo_doxygen/tests/python-def/xml/namespacefoo.xml
deleted file mode 100644 (file)
index 68c0b1d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="namespacefoo" kind="namespace">
-    <compoundname>foo</compoundname>
-      <sectiondef kind="func">
-      <memberdef kind="function" id="namespacefoo_1aab1e88a2212b202c20f3c9bd799a1ad4" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
-        <type>def</type>
-        <definition>def foo.bar</definition>
-        <argsstring></argsstring>
-        <name>bar</name>
-        <briefdescription>
-<para>A <computeroutput>bar</computeroutput> function in the <computeroutput>foo</computeroutput> namespace. </para>        </briefdescription>
-        <detaileddescription>
-<para><verbatim>By default, Doxygen recognizes anything in the docstrings as verbatim
-detailed description.</verbatim> </para>        </detaileddescription>
-        <inbodydescription>
-        </inbodydescription>
-        <location file="%SOURCE_DIRECTORY%/foo.py" line="16" column="1" bodyfile="%SOURCE_DIRECTORY%/foo.py" bodystart="16" bodyend="20"/>
-      </memberdef>
-      </sectiondef>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/foo.py" line="1" column="1"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/root-namespace/Doxyfile b/contrib/neo_doxygen/tests/root-namespace/Doxyfile
deleted file mode 100644 (file)
index 46601c2..0000000
+++ /dev/null
@@ -1,2381 +0,0 @@
-# Doxyfile 1.8.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME           = "Test Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER         =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS         = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES    = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES        = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES                =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST              =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA   = YES
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT       = YES
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT       = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC  = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS               = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
-# Note: If this tag is empty the current directory is searched.
-
-INPUT                  = src
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cxx \
-                         *.cpp \
-                         *.c++ \
-                         *.java \
-                         *.ii \
-                         *.ixx \
-                         *.ipp \
-                         *.i++ \
-                         *.inl \
-                         *.idl \
-                         *.ddl \
-                         *.odl \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.hpp \
-                         *.h++ \
-                         *.cs \
-                         *.d \
-                         *.php \
-                         *.php4 \
-                         *.php5 \
-                         *.phtml \
-                         *.inc \
-                         *.m \
-                         *.markdown \
-                         *.md \
-                         *.mm \
-                         *.dox \
-                         *.py \
-                         *.f90 \
-                         *.f \
-                         *.for \
-                         *.tcl \
-                         *.vhd \
-                         *.vhdl \
-                         *.ucf \
-                         *.qsf \
-                         *.as \
-                         *.js
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE                =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS        = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX     = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML          = NO
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER            =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra stylesheet files is of importance (e.g. the last
-# stylesheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET  =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET        = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP      = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE               =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION           =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI           = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING     =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH         = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT         = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS     =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE       =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH    = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH        = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL       =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE        = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID     =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS  =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER           =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES      =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE        = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES     = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION          = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR             =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML           = YES
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT             = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK       = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT         = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS        = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES         = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH               =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: NO.
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS        = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK               = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS   = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH          = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, jpg, gif and svg.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG        = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS           =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS           =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-PLANTUML_JAR_PATH      =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP            = YES
diff --git a/contrib/neo_doxygen/tests/root-namespace/README.md b/contrib/neo_doxygen/tests/root-namespace/README.md
deleted file mode 100644 (file)
index 2a87fc7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-This directory contains a dummy Java project for testing purposes.
-
-To regenerate the XML output located in `xml`, run `make`. If the `Makefile`
-does not exists, you can regenerate it by running `make bootstrap` in the parent
-directory.
diff --git a/contrib/neo_doxygen/tests/root-namespace/src/Foo.java b/contrib/neo_doxygen/tests/root-namespace/src/Foo.java
deleted file mode 100644 (file)
index 9da779f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/* This file is part of NIT ( http://www.nitlanguage.org ).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * A class in the root namespace
- */
-class Foo {}
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/_foo_8java.xml b/contrib/neo_doxygen/tests/root-namespace/xml/_foo_8java.xml
deleted file mode 100644 (file)
index ad87211..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="_foo_8java" kind="file">
-    <compoundname>Foo.java</compoundname>
-    <innerclass refid="class_foo" prot="package">Foo</innerclass>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/Foo.java"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/class_foo.xml b/contrib/neo_doxygen/tests/root-namespace/xml/class_foo.xml
deleted file mode 100644 (file)
index 86405c8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="class_foo" kind="class" prot="package">
-    <compoundname>Foo</compoundname>
-    <briefdescription>
-<para>A class in the root namespace. </para>    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/Foo.java" line="19" column="1" bodyfile="%SOURCE_DIRECTORY%/Foo.java" bodystart="19" bodyend="19"/>
-    <listofallmembers>
-    </listofallmembers>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/combine.xslt b/contrib/neo_doxygen/tests/root-namespace/xml/combine.xslt
deleted file mode 100644 (file)
index c148ee4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- XSLT script to combine the generated output into a single file. 
-     If you have xsltproc you could use:
-     xsltproc combine.xslt index.xml >all.xml
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-  <xsl:output method="xml" version="1.0" indent="no" standalone="yes" />
-  <xsl:template match="/">
-    <doxygen version="{doxygenindex/@version}">
-      <!-- Load all doxgen generated xml files -->
-      <xsl:for-each select="doxygenindex/compound">
-        <xsl:copy-of select="document( concat( @refid, '.xml' ) )/doxygen/*" />
-      </xsl:for-each>
-    </doxygen>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/compound.xsd b/contrib/neo_doxygen/tests/root-namespace/xml/compound.xsd
deleted file mode 100644 (file)
index 86740f4..0000000
+++ /dev/null
@@ -1,1092 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygen" type="DoxygenType"/>
-
-  <!-- Complex types -->
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence maxOccurs="unbounded">
-      <xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="version" type="DoxVersionNumber" use="required" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compounddefType">
-    <xsd:sequence>
-      <xsd:element name="compoundname" type="xsd:string"/>
-      <xsd:element name="title" type="xsd:string" minOccurs="0" />
-      <xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="innerdir" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
-      <xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
-      <xsd:element name="programlisting" type="listingType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" minOccurs="0" />
-      <xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="kind" type="DoxCompoundKind" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="abstract" type="DoxBool" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listofallmembersType">
-    <xsd:sequence>
-      <xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="memberRefType">
-    <xsd:sequence>
-      <xsd:element name="scope" />
-      <xsd:element name="name" />
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="virt" type="DoxVirtualKind" />
-    <xsd:attribute name="ambiguityscope" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="compoundRefType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" use="optional" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" />
-        <xsd:attribute name="virt" type="DoxVirtualKind" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="reimplementType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="incType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="local" type="DoxBool" />
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-        <xsd:attribute name="refid" type="xsd:string" />
-        <xsd:attribute name="prot" type="DoxProtectionKind" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="refTextType">
-    <xsd:simpleContent>
-      <xsd:extension base="xsd:string">
-       <xsd:attribute name="refid" type="xsd:string" />
-       <xsd:attribute name="kindref" type="DoxRefKind" />
-       <xsd:attribute name="external" type="xsd:string" use="optional"/>
-       <xsd:attribute name="tooltip" type="xsd:string" use="optional"/>
-      </xsd:extension>
-    </xsd:simpleContent>
-  </xsd:complexType>
-
-  <xsd:complexType name="sectiondefType">
-    <xsd:sequence>
-      <xsd:element name="header" type="xsd:string" minOccurs="0" />
-      <xsd:element name="description" type="descriptionType" minOccurs="0" />
-      <xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="memberdefType">
-    <xsd:sequence>
-      <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="definition" minOccurs="0" />
-      <xsd:element name="argsstring" minOccurs="0" />
-      <xsd:element name="name" />
-      <xsd:element name="read" minOccurs="0" />
-      <xsd:element name="write" minOccurs="0" />
-      <xsd:element name="bitfield" minOccurs="0" />
-      <xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="location" type="locationType" />
-      <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxMemberKind" />
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-    <xsd:attribute name="static" type="DoxBool" />
-    <xsd:attribute name="const" type="DoxBool" use="optional"/>
-    <xsd:attribute name="explicit" type="DoxBool" use="optional"/>
-    <xsd:attribute name="inline" type="DoxBool" use="optional"/>
-    <xsd:attribute name="virt" type="DoxVirtualKind" use="optional"/>
-    <xsd:attribute name="volatile" type="DoxBool" use="optional"/>
-    <xsd:attribute name="mutable" type="DoxBool" use="optional"/>
-    <!-- Qt property -->
-    <xsd:attribute name="readable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="writable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI variable -->
-    <xsd:attribute name="initonly" type="DoxBool" use="optional"/>
-    <!-- C++/CLI and C# property -->
-    <xsd:attribute name="settable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="gettable" type="DoxBool" use="optional"/>
-    <!-- C++/CLI function -->
-    <xsd:attribute name="final" type="DoxBool" use="optional"/>
-    <xsd:attribute name="sealed" type="DoxBool" use="optional"/>
-    <xsd:attribute name="new" type="DoxBool" use="optional"/>
-    <!-- C++/CLI event -->
-    <xsd:attribute name="add" type="DoxBool" use="optional"/>
-    <xsd:attribute name="remove" type="DoxBool" use="optional"/>
-    <xsd:attribute name="raise" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 protocol method -->
-    <xsd:attribute name="optional" type="DoxBool" use="optional"/>
-    <xsd:attribute name="required" type="DoxBool" use="optional"/>
-    <!-- Objective-C 2.0 property accessor -->
-    <xsd:attribute name="accessor" type="DoxAccessor" use="optional"/>
-    <!-- UNO IDL -->
-    <xsd:attribute name="attribute" type="DoxBool" use="optional"/>
-    <xsd:attribute name="property" type="DoxBool" use="optional"/>
-    <xsd:attribute name="readonly" type="DoxBool" use="optional"/>
-    <xsd:attribute name="bound" type="DoxBool" use="optional"/>
-    <xsd:attribute name="removable" type="DoxBool" use="optional"/>
-    <xsd:attribute name="contrained" type="DoxBool" use="optional"/>
-    <xsd:attribute name="transient" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybevoid" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybedefault" type="DoxBool" use="optional"/>
-    <xsd:attribute name="maybeambiguous" type="DoxBool" use="optional"/>
-
-  </xsd:complexType>
-
-  <xsd:complexType name="descriptionType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" minOccurs="0"/>          
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="enumvalueType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="name" />
-      <xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-      <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-    <xsd:attribute name="prot" type="DoxProtectionKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="templateparamlistType">
-    <xsd:sequence>
-      <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="paramType">
-    <xsd:sequence>
-      <xsd:element name="type" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="declname" minOccurs="0" />
-      <xsd:element name="defname" minOccurs="0" />
-      <xsd:element name="array" minOccurs="0" />
-      <xsd:element name="defval" type="linkedTextType" minOccurs="0" />
-      <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="linkedTextType" mixed="true">
-    <xsd:sequence>
-    <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="graphType">
-    <xsd:sequence>
-      <xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="nodeType">
-    <xsd:sequence>
-      <xsd:element name="label" />
-      <xsd:element name="link" type="linkType" minOccurs="0" />
-      <xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="childnodeType">
-    <xsd:sequence>
-      <xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="relation" type="DoxGraphRelation" />
-  </xsd:complexType>
-
-  <xsd:complexType name="linkType">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="external" type="xsd:string" use="optional"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="listingType">
-    <xsd:sequence>
-      <xsd:element name="codeline" type="codelineType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="codelineType">
-    <xsd:sequence>
-      <xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="lineno" type="xsd:integer" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="refkind" type="DoxRefKind" />
-    <xsd:attribute name="external" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="highlightType" mixed="true">
-    <xsd:choice minOccurs="0" maxOccurs="unbounded">
-      <xsd:element name="sp" />
-      <xsd:element name="ref" type="refTextType" />
-    </xsd:choice>
-    <xsd:attribute name="class" type="DoxHighlightClass" />
-  </xsd:complexType>
-
-  <xsd:complexType name="referenceType" mixed="true">
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="compoundref" type="xsd:string" use="optional" />
-    <xsd:attribute name="startline" type="xsd:integer" />
-    <xsd:attribute name="endline" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="locationType">
-    <xsd:attribute name="file" type="xsd:string" />
-    <xsd:attribute name="line" type="xsd:integer" />
-    <xsd:attribute name="column" type="xsd:integer" use="optional"/>
-    <xsd:attribute name="bodyfile" type="xsd:string" />
-    <xsd:attribute name="bodystart" type="xsd:integer" />
-    <xsd:attribute name="bodyend" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docSect4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="title" type="xsd:string" />       
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS1Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS2Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS3Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docInternalS4Type" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="para"  type="docParaType"  minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-  <xsd:group name="docTitleCmdGroup">
-    <xsd:choice>
-      <xsd:element name="ulink" type="docURLLink" />
-      <xsd:element name="bold" type="docMarkupType" />
-      <xsd:element name="emphasis" type="docMarkupType" />
-      <xsd:element name="computeroutput" type="docMarkupType" />
-      <xsd:element name="subscript" type="docMarkupType" />
-      <xsd:element name="superscript" type="docMarkupType" />
-      <xsd:element name="center" type="docMarkupType" />
-      <xsd:element name="small" type="docMarkupType" />
-      <xsd:element name="htmlonly" type="xsd:string" />
-      <xsd:element name="manonly" type="xsd:string" />
-      <xsd:element name="xmlonly" type="xsd:string" />
-      <xsd:element name="rtfonly" type="xsd:string" />
-      <xsd:element name="latexonly" type="xsd:string" />
-      <xsd:element name="dot" type="xsd:string" />
-      <xsd:element name="plantuml" type="xsd:string" />
-      <xsd:element name="anchor" type="docAnchorType" />
-      <xsd:element name="formula" type="docFormulaType" />
-      <xsd:element name="ref" type="docRefTextType" />
-      <xsd:element name="nonbreakablespace" type="docEmptyType" />
-      <xsd:element name="iexcl" type="docEmptyType" />
-      <xsd:element name="cent" type="docEmptyType" />
-      <xsd:element name="pound" type="docEmptyType" />
-      <xsd:element name="curren" type="docEmptyType" />
-      <xsd:element name="yen" type="docEmptyType" />
-      <xsd:element name="brvbar" type="docEmptyType" />
-      <xsd:element name="sect" type="docEmptyType" />
-      <xsd:element name="umlaut" type="docEmptyType" />
-      <xsd:element name="copy" type="docEmptyType" />
-      <xsd:element name="ordf" type="docEmptyType" />
-      <xsd:element name="laquo" type="docEmptyType" />
-      <xsd:element name="not" type="docEmptyType" />
-      <xsd:element name="shy" type="docEmptyType" />
-      <xsd:element name="registered" type="docEmptyType" />
-      <xsd:element name="macr" type="docEmptyType" />
-      <xsd:element name="deg" type="docEmptyType" />
-      <xsd:element name="plusmn" type="docEmptyType" />
-      <xsd:element name="sup2" type="docEmptyType" />
-      <xsd:element name="sup3" type="docEmptyType" />
-      <xsd:element name="acute" type="docEmptyType" />
-      <xsd:element name="micro" type="docEmptyType" />
-      <xsd:element name="para" type="docEmptyType" />
-      <xsd:element name="middot" type="docEmptyType" />
-      <xsd:element name="cedil" type="docEmptyType" />
-      <xsd:element name="sup1" type="docEmptyType" />
-      <xsd:element name="ordm" type="docEmptyType" />
-      <xsd:element name="raquo" type="docEmptyType" />
-      <xsd:element name="frac14" type="docEmptyType" />
-      <xsd:element name="frac12" type="docEmptyType" />
-      <xsd:element name="frac34" type="docEmptyType" />
-      <xsd:element name="iquest" type="docEmptyType" />
-      <xsd:element name="Agrave" type="docEmptyType" />
-      <xsd:element name="Aacute" type="docEmptyType" />
-      <xsd:element name="Acirc" type="docEmptyType" />
-      <xsd:element name="Atilde" type="docEmptyType" />
-      <xsd:element name="Aumlaut" type="docEmptyType" />
-      <xsd:element name="Aring" type="docEmptyType" />
-      <xsd:element name="AElig" type="docEmptyType" />
-      <xsd:element name="Ccedil" type="docEmptyType" />
-      <xsd:element name="Egrave" type="docEmptyType" />
-      <xsd:element name="Eacute" type="docEmptyType" />
-      <xsd:element name="Ecirc" type="docEmptyType" />
-      <xsd:element name="Eumlaut" type="docEmptyType" />
-      <xsd:element name="Igrave" type="docEmptyType" />
-      <xsd:element name="Iacute" type="docEmptyType" />
-      <xsd:element name="Icirc" type="docEmptyType" />
-      <xsd:element name="Iumlaut" type="docEmptyType" />
-      <xsd:element name="ETH" type="docEmptyType" />
-      <xsd:element name="Ntilde" type="docEmptyType" />
-      <xsd:element name="Ograve" type="docEmptyType" />
-      <xsd:element name="Oacute" type="docEmptyType" />
-      <xsd:element name="Ocirc" type="docEmptyType" />
-      <xsd:element name="Otilde" type="docEmptyType" />
-      <xsd:element name="Oumlaut" type="docEmptyType" />
-      <xsd:element name="times" type="docEmptyType" />
-      <xsd:element name="Oslash" type="docEmptyType" />
-      <xsd:element name="Ugrave" type="docEmptyType" />
-      <xsd:element name="Uacute" type="docEmptyType" />
-      <xsd:element name="Ucirc" type="docEmptyType" />
-      <xsd:element name="Uumlaut" type="docEmptyType" />
-      <xsd:element name="Yacute" type="docEmptyType" />
-      <xsd:element name="THORN" type="docEmptyType" />
-      <xsd:element name="szlig" type="docEmptyType" />
-      <xsd:element name="agrave" type="docEmptyType" />
-      <xsd:element name="aacute" type="docEmptyType" />
-      <xsd:element name="acirc" type="docEmptyType" />
-      <xsd:element name="atilde" type="docEmptyType" />
-      <xsd:element name="aumlaut" type="docEmptyType" />
-      <xsd:element name="aring" type="docEmptyType" />
-      <xsd:element name="aelig" type="docEmptyType" />
-      <xsd:element name="ccedil" type="docEmptyType" />
-      <xsd:element name="egrave" type="docEmptyType" />
-      <xsd:element name="eacute" type="docEmptyType" />
-      <xsd:element name="ecirc" type="docEmptyType" />
-      <xsd:element name="eumlaut" type="docEmptyType" />
-      <xsd:element name="igrave" type="docEmptyType" />
-      <xsd:element name="iacute" type="docEmptyType" />
-      <xsd:element name="icirc" type="docEmptyType" />
-      <xsd:element name="iumlaut" type="docEmptyType" />
-      <xsd:element name="eth" type="docEmptyType" />
-      <xsd:element name="ntilde" type="docEmptyType" />
-      <xsd:element name="ograve" type="docEmptyType" />
-      <xsd:element name="oacute" type="docEmptyType" />
-      <xsd:element name="ocirc" type="docEmptyType" />
-      <xsd:element name="otilde" type="docEmptyType" />
-      <xsd:element name="oumlaut" type="docEmptyType" />
-      <xsd:element name="divide" type="docEmptyType" />
-      <xsd:element name="oslash" type="docEmptyType" />
-      <xsd:element name="ugrave" type="docEmptyType" />
-      <xsd:element name="uacute" type="docEmptyType" />
-      <xsd:element name="ucirc" type="docEmptyType" />
-      <xsd:element name="uumlaut" type="docEmptyType" />
-      <xsd:element name="yacute" type="docEmptyType" />
-      <xsd:element name="thorn" type="docEmptyType" />
-      <xsd:element name="yumlaut" type="docEmptyType" />
-      <xsd:element name="fnof" type="docEmptyType" />
-      <xsd:element name="Alpha" type="docEmptyType" />
-      <xsd:element name="Beta" type="docEmptyType" />
-      <xsd:element name="Gamma" type="docEmptyType" />
-      <xsd:element name="Delta" type="docEmptyType" />
-      <xsd:element name="Epsilon" type="docEmptyType" />
-      <xsd:element name="Zeta" type="docEmptyType" />
-      <xsd:element name="Eta" type="docEmptyType" />
-      <xsd:element name="Theta" type="docEmptyType" />
-      <xsd:element name="Iota" type="docEmptyType" />
-      <xsd:element name="Kappa" type="docEmptyType" />
-      <xsd:element name="Lambda" type="docEmptyType" />
-      <xsd:element name="Mu" type="docEmptyType" />
-      <xsd:element name="Nu" type="docEmptyType" />
-      <xsd:element name="Xi" type="docEmptyType" />
-      <xsd:element name="Omicron" type="docEmptyType" />
-      <xsd:element name="Pi" type="docEmptyType" />
-      <xsd:element name="Rho" type="docEmptyType" />
-      <xsd:element name="Sigma" type="docEmptyType" />
-      <xsd:element name="Tau" type="docEmptyType" />
-      <xsd:element name="Upsilon" type="docEmptyType" />
-      <xsd:element name="Phi" type="docEmptyType" />
-      <xsd:element name="Chi" type="docEmptyType" />
-      <xsd:element name="Psi" type="docEmptyType" />
-      <xsd:element name="Omega" type="docEmptyType" />
-      <xsd:element name="alpha" type="docEmptyType" />
-      <xsd:element name="beta" type="docEmptyType" />
-      <xsd:element name="gamma" type="docEmptyType" />
-      <xsd:element name="delta" type="docEmptyType" />
-      <xsd:element name="epsilon" type="docEmptyType" />
-      <xsd:element name="zeta" type="docEmptyType" />
-      <xsd:element name="eta" type="docEmptyType" />
-      <xsd:element name="theta" type="docEmptyType" />
-      <xsd:element name="iota" type="docEmptyType" />
-      <xsd:element name="kappa" type="docEmptyType" />
-      <xsd:element name="lambda" type="docEmptyType" />
-      <xsd:element name="mu" type="docEmptyType" />
-      <xsd:element name="nu" type="docEmptyType" />
-      <xsd:element name="xi" type="docEmptyType" />
-      <xsd:element name="omicron" type="docEmptyType" />
-      <xsd:element name="pi" type="docEmptyType" />
-      <xsd:element name="rho" type="docEmptyType" />
-      <xsd:element name="sigmaf" type="docEmptyType" />
-      <xsd:element name="sigma" type="docEmptyType" />
-      <xsd:element name="tau" type="docEmptyType" />
-      <xsd:element name="upsilon" type="docEmptyType" />
-      <xsd:element name="phi" type="docEmptyType" />
-      <xsd:element name="chi" type="docEmptyType" />
-      <xsd:element name="psi" type="docEmptyType" />
-      <xsd:element name="omega" type="docEmptyType" />
-      <xsd:element name="thetasym" type="docEmptyType" />
-      <xsd:element name="upsih" type="docEmptyType" />
-      <xsd:element name="piv" type="docEmptyType" />
-      <xsd:element name="bull" type="docEmptyType" />
-      <xsd:element name="hellip" type="docEmptyType" />
-      <xsd:element name="prime" type="docEmptyType" />
-      <xsd:element name="Prime" type="docEmptyType" />
-      <xsd:element name="oline" type="docEmptyType" />
-      <xsd:element name="frasl" type="docEmptyType" />
-      <xsd:element name="weierp" type="docEmptyType" />
-      <xsd:element name="image" type="docEmptyType" />
-      <xsd:element name="real" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-      <xsd:element name="alefsym" type="docEmptyType" />
-      <xsd:element name="larr" type="docEmptyType" />
-      <xsd:element name="uarr" type="docEmptyType" />
-      <xsd:element name="rarr" type="docEmptyType" />
-      <xsd:element name="darr" type="docEmptyType" />
-      <xsd:element name="harr" type="docEmptyType" />
-      <xsd:element name="crarr" type="docEmptyType" />
-      <xsd:element name="lArr" type="docEmptyType" />
-      <xsd:element name="uArr" type="docEmptyType" />
-      <xsd:element name="rArr" type="docEmptyType" />
-      <xsd:element name="dArr" type="docEmptyType" />
-      <xsd:element name="hArr" type="docEmptyType" />
-      <xsd:element name="forall" type="docEmptyType" />
-      <xsd:element name="part" type="docEmptyType" />
-      <xsd:element name="exist" type="docEmptyType" />
-      <xsd:element name="empty" type="docEmptyType" />
-      <xsd:element name="nabla" type="docEmptyType" />
-      <xsd:element name="isin" type="docEmptyType" />
-      <xsd:element name="notin" type="docEmptyType" />
-      <xsd:element name="ni" type="docEmptyType" />
-      <xsd:element name="prod" type="docEmptyType" />
-      <xsd:element name="sum" type="docEmptyType" />
-      <xsd:element name="minus" type="docEmptyType" />
-      <xsd:element name="lowast" type="docEmptyType" />
-      <xsd:element name="radic" type="docEmptyType" />
-      <xsd:element name="prop" type="docEmptyType" />
-      <xsd:element name="infin" type="docEmptyType" />
-      <xsd:element name="ang" type="docEmptyType" />
-      <xsd:element name="and" type="docEmptyType" />
-      <xsd:element name="or" type="docEmptyType" />
-      <xsd:element name="cap" type="docEmptyType" />
-      <xsd:element name="cup" type="docEmptyType" />
-      <xsd:element name="int" type="docEmptyType" />
-      <xsd:element name="there4" type="docEmptyType" />
-      <xsd:element name="sim" type="docEmptyType" />
-      <xsd:element name="cong" type="docEmptyType" />
-      <xsd:element name="asymp" type="docEmptyType" />
-      <xsd:element name="ne" type="docEmptyType" />
-      <xsd:element name="equiv" type="docEmptyType" />
-      <xsd:element name="le" type="docEmptyType" />
-      <xsd:element name="ge" type="docEmptyType" />
-      <xsd:element name="sub" type="docEmptyType" />
-      <xsd:element name="sup" type="docEmptyType" />
-      <xsd:element name="nsub" type="docEmptyType" />
-      <xsd:element name="sube" type="docEmptyType" />
-      <xsd:element name="supe" type="docEmptyType" />
-      <xsd:element name="oplus" type="docEmptyType" />
-      <xsd:element name="otimes" type="docEmptyType" />
-      <xsd:element name="perp" type="docEmptyType" />
-      <xsd:element name="sdot" type="docEmptyType" />
-      <xsd:element name="lceil" type="docEmptyType" />
-      <xsd:element name="rceil" type="docEmptyType" />
-      <xsd:element name="lfloor" type="docEmptyType" />
-      <xsd:element name="rfloor" type="docEmptyType" />
-      <xsd:element name="lang" type="docEmptyType" />
-      <xsd:element name="rang" type="docEmptyType" />
-      <xsd:element name="loz" type="docEmptyType" />
-      <xsd:element name="spades" type="docEmptyType" />
-      <xsd:element name="clubs" type="docEmptyType" />
-      <xsd:element name="hearts" type="docEmptyType" />
-      <xsd:element name="diams" type="docEmptyType" />
-      <xsd:element name="OElig" type="docEmptyType" />
-      <xsd:element name="oelig" type="docEmptyType" />
-      <xsd:element name="Scaron" type="docEmptyType" />
-      <xsd:element name="scaron" type="docEmptyType" />
-      <xsd:element name="Yumlaut" type="docEmptyType" />
-      <xsd:element name="circ" type="docEmptyType" />
-      <xsd:element name="tilde" type="docEmptyType" />
-      <xsd:element name="ensp" type="docEmptyType" />
-      <xsd:element name="emsp" type="docEmptyType" />
-      <xsd:element name="thinsp" type="docEmptyType" />
-      <xsd:element name="zwnj" type="docEmptyType" />
-      <xsd:element name="zwj" type="docEmptyType" />
-      <xsd:element name="lrm" type="docEmptyType" />
-      <xsd:element name="rlm" type="docEmptyType" />
-      <xsd:element name="ndash" type="docEmptyType" />
-      <xsd:element name="mdash" type="docEmptyType" />
-      <xsd:element name="lsquo" type="docEmptyType" />
-      <xsd:element name="rsquo" type="docEmptyType" />
-      <xsd:element name="sbquo" type="docEmptyType" />
-      <xsd:element name="ldquo" type="docEmptyType" />
-      <xsd:element name="rdquo" type="docEmptyType" />
-      <xsd:element name="bdquo" type="docEmptyType" />
-      <xsd:element name="dagger" type="docEmptyType" />
-      <xsd:element name="Dagger" type="docEmptyType" />
-      <xsd:element name="permil" type="docEmptyType" />
-      <xsd:element name="lsaquo" type="docEmptyType" />
-      <xsd:element name="rsaquo" type="docEmptyType" />
-      <xsd:element name="euro" type="docEmptyType" />
-      <xsd:element name="trademark" type="docEmptyType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docTitleType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:group name="docCmdGroup">
-    <xsd:choice>
-      <xsd:group ref="docTitleCmdGroup"/>
-      <xsd:element name="linebreak" type="docEmptyType" />
-      <xsd:element name="hruler" type="docEmptyType" />
-      <xsd:element name="preformatted" type="docMarkupType" />
-      <xsd:element name="programlisting" type="listingType" />
-      <xsd:element name="verbatim" type="xsd:string" />
-      <xsd:element name="indexentry" type="docIndexEntryType" />
-      <xsd:element name="orderedlist" type="docListType" />
-      <xsd:element name="itemizedlist" type="docListType" />
-      <xsd:element name="simplesect" type="docSimpleSectType" />
-      <xsd:element name="title" type="docTitleType" />
-      <xsd:element name="variablelist" type="docVariableListType" />
-      <xsd:element name="table" type="docTableType" />
-      <xsd:element name="heading" type="docHeadingType" />
-      <xsd:element name="image" type="docImageType" />
-      <xsd:element name="dotfile" type="docFileType" />
-      <xsd:element name="mscfile" type="docFileType" />
-      <xsd:element name="diafile" type="docFileType" />
-      <xsd:element name="toclist" type="docTocListType" />
-      <xsd:element name="language" type="docLanguageType" />
-      <xsd:element name="parameterlist" type="docParamListType" />
-      <xsd:element name="xrefsect" type="docXRefSectType" />
-      <xsd:element name="copydoc" type="docCopyType" />
-      <xsd:element name="blockquote" type="docBlockQuoteType" />
-      <xsd:element name="parblock" type="docParBlockType" />
-    </xsd:choice>
-  </xsd:group>
-
-  <xsd:complexType name="docParaType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docMarkupType" mixed="true">
-    <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docURLLink" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="url" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docAnchorType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docFormulaType" mixed="true">
-    <xsd:attribute name="id" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docIndexEntryType">
-    <xsd:sequence>
-      <xsd:element name="primaryie" type="xsd:string" />
-      <xsd:element name="secondaryie" type="xsd:string" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListType">
-    <xsd:sequence>
-      <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docListItemType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docSimpleSectType">
-    <xsd:sequence>
-      <xsd:element name="title" type="docTitleType" minOccurs="0" />
-      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
-        <xsd:element name="para" type="docParaType" minOccurs="1" maxOccurs="unbounded" />
-      </xsd:sequence>
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxSimpleSectKind" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docVarListEntryType">
-    <xsd:sequence>
-      <xsd:element name="term" type="docTitleType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:group name="docVariableListGroup">
-    <xsd:sequence>
-      <xsd:element name="varlistentry" type="docVarListEntryType" />
-      <xsd:element name="listitem" type="docListItemType" />
-    </xsd:sequence>
-  </xsd:group>
-
-  <xsd:complexType name="docVariableListType">
-    <xsd:sequence>
-      <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docRefTextType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="refid" type="xsd:string" />
-    <xsd:attribute name="kindref" type="DoxRefKind" />
-    <xsd:attribute name="external" type="xsd:string" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docTableType">
-    <xsd:sequence>
-      <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="rows" type="xsd:integer" />
-    <xsd:attribute name="cols" type="xsd:integer" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docRowType">
-    <xsd:sequence>
-      <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEntryType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="thead" type="DoxBool" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docCaptionType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docHeadingType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
-  </xsd:complexType>
-
-  <xsd:complexType name="docImageType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="type" type="DoxImageKind" /> 
-    <xsd:attribute name="name" type="xsd:string" /> 
-    <xsd:attribute name="width" type="xsd:string" /> 
-    <xsd:attribute name="height" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docFileType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="name" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocItemType" mixed="true">
-    <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docTocListType">
-    <xsd:sequence>
-      <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docLanguageType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="langid" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListType">
-    <xsd:sequence>
-      <xsd:element name="parameteritem" type="docParamListItem" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-    <xsd:attribute name="kind" type="DoxParamListKind" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamListItem">
-    <xsd:sequence>
-      <xsd:element name="parameternamelist" type="docParamNameList" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parameterdescription" type="descriptionType" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamNameList">
-    <xsd:sequence>
-      <xsd:element name="parametertype" type="docParamType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="parametername" type="docParamName" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamType" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParamName" mixed="true">
-    <xsd:sequence>
-      <xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="1" />
-    </xsd:sequence>
-    <xsd:attribute name="direction" type="DoxParamDir" use="optional" />
-  </xsd:complexType>
-
-  <xsd:complexType name="docXRefSectType">
-    <xsd:sequence>
-      <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="xrefdescription" type="descriptionType" />
-    </xsd:sequence>
-    <xsd:attribute name="id" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docCopyType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
-      <xsd:element name="internal" type="docInternalType" minOccurs="0" />
-    </xsd:sequence>
-    <xsd:attribute name="link" type="xsd:string" /> 
-  </xsd:complexType>
-
-  <xsd:complexType name="docBlockQuoteType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docParBlockType">
-    <xsd:sequence>
-      <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="docEmptyType"/>
-
-  <!-- Simple types -->
-
-  <xsd:simpleType name="DoxBool">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="yes" />
-      <xsd:enumeration value="no" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxGraphRelation">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="include" />
-      <xsd:enumeration value="usage" />
-      <xsd:enumeration value="template-instance" />
-      <xsd:enumeration value="public-inheritance" />
-      <xsd:enumeration value="protected-inheritance" />
-      <xsd:enumeration value="private-inheritance" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxRefKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="compound" />
-      <xsd:enumeration value="member" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxMemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="variable" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="function" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="dcop" />
-      <xsd:enumeration value="slot" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="service" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxProtectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="public" />
-      <xsd:enumeration value="protected" />
-      <xsd:enumeration value="private" />
-      <xsd:enumeration value="package" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVirtualKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="non-virtual" />
-      <xsd:enumeration value="virtual" />
-      <xsd:enumeration value="pure-virtual" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class" />
-      <xsd:enumeration value="struct" />
-      <xsd:enumeration value="union" />
-      <xsd:enumeration value="interface" />
-      <xsd:enumeration value="protocol" />
-      <xsd:enumeration value="category" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="service" />
-      <xsd:enumeration value="singleton" />
-      <xsd:enumeration value="module" />
-      <xsd:enumeration value="type" />
-      <xsd:enumeration value="file" />
-      <xsd:enumeration value="namespace" />
-      <xsd:enumeration value="group" />
-      <xsd:enumeration value="page" />
-      <xsd:enumeration value="example" />
-      <xsd:enumeration value="dir" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSectionKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="user-defined" />
-      <xsd:enumeration value="public-type" />
-      <xsd:enumeration value="public-func" />
-      <xsd:enumeration value="public-attrib" />
-      <xsd:enumeration value="public-slot" />
-      <xsd:enumeration value="signal" />
-      <xsd:enumeration value="dcop-func" />
-      <xsd:enumeration value="property" />
-      <xsd:enumeration value="event" />
-      <xsd:enumeration value="public-static-func" />
-      <xsd:enumeration value="public-static-attrib" />
-      <xsd:enumeration value="protected-type" />
-      <xsd:enumeration value="protected-func" />
-      <xsd:enumeration value="protected-attrib" />
-      <xsd:enumeration value="protected-slot" />
-      <xsd:enumeration value="protected-static-func" />
-      <xsd:enumeration value="protected-static-attrib" />
-      <xsd:enumeration value="package-type" />
-      <xsd:enumeration value="package-func" />
-      <xsd:enumeration value="package-attrib" />
-      <xsd:enumeration value="package-static-func" />
-      <xsd:enumeration value="package-static-attrib" />
-      <xsd:enumeration value="private-type" />
-      <xsd:enumeration value="private-func" />
-      <xsd:enumeration value="private-attrib" />
-      <xsd:enumeration value="private-slot" />
-      <xsd:enumeration value="private-static-func" />
-      <xsd:enumeration value="private-static-attrib" />
-      <xsd:enumeration value="friend" />
-      <xsd:enumeration value="related" />
-      <xsd:enumeration value="define" />
-      <xsd:enumeration value="prototype" />
-      <xsd:enumeration value="typedef" />
-      <xsd:enumeration value="enum" />
-      <xsd:enumeration value="func" />
-      <xsd:enumeration value="var" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxHighlightClass">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="comment" />
-      <xsd:enumeration value="normal" />
-      <xsd:enumeration value="preprocessor" />
-      <xsd:enumeration value="keyword" />
-      <xsd:enumeration value="keywordtype" />
-      <xsd:enumeration value="keywordflow" />
-      <xsd:enumeration value="stringliteral" />
-      <xsd:enumeration value="charliteral" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxSimpleSectKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="see" />
-      <xsd:enumeration value="return" />
-      <xsd:enumeration value="author" />
-      <xsd:enumeration value="authors" />
-      <xsd:enumeration value="version" />
-      <xsd:enumeration value="since" />
-      <xsd:enumeration value="date" />
-      <xsd:enumeration value="note" />
-      <xsd:enumeration value="warning" />
-      <xsd:enumeration value="pre" />
-      <xsd:enumeration value="post" />
-      <xsd:enumeration value="copyright" />
-      <xsd:enumeration value="invariant" />
-      <xsd:enumeration value="remark" />
-      <xsd:enumeration value="attention" />
-      <xsd:enumeration value="par" />
-      <xsd:enumeration value="rcs" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxVersionNumber">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="\d+\.\d+.*" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxImageKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="html" />
-      <xsd:enumeration value="latex" />
-      <xsd:enumeration value="rtf" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamListKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="param" />
-      <xsd:enumeration value="retval" />
-      <xsd:enumeration value="exception" />
-      <xsd:enumeration value="templateparam" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxCharRange">
-    <xsd:restriction base="xsd:string">
-      <xsd:pattern value="[aeiouncAEIOUNC]" />
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxParamDir">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="in"/>
-      <xsd:enumeration value="out"/>
-      <xsd:enumeration value="inout"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="DoxAccessor">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="retain"/>
-      <xsd:enumeration value="copy"/>
-      <xsd:enumeration value="assign"/>
-      <xsd:enumeration value="weak"/>
-      <xsd:enumeration value="strong"/>
-      <xsd:enumeration value="unretained"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml b/contrib/neo_doxygen/tests/root-namespace/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml
deleted file mode 100644 (file)
index 6e59cc5..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
-  <compounddef id="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir">
-    <compoundname>src</compoundname>
-    <innerfile refid="_foo_8java">Foo.java</innerfile>
-    <briefdescription>
-    </briefdescription>
-    <detaileddescription>
-    </detaileddescription>
-    <location file="%SOURCE_DIRECTORY%/"/>
-  </compounddef>
-</doxygen>
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/index.xml b/contrib/neo_doxygen/tests/root-namespace/xml/index.xml
deleted file mode 100644 (file)
index 68a2afb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='no'?>
-<doxygenindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="index.xsd" version="1.8.8">
-  <compound refid="class_foo" kind="class"><name>Foo</name>
-  </compound>
-  <compound refid="_foo_8java" kind="file"><name>Foo.java</name>
-  </compound>
-  <compound refid="dir_68267d1309a1af8e8297ef4c3efbcdba" kind="dir"><name>src</name>
-  </compound>
-</doxygenindex>
diff --git a/contrib/neo_doxygen/tests/root-namespace/xml/index.xsd b/contrib/neo_doxygen/tests/root-namespace/xml/index.xsd
deleted file mode 100644 (file)
index d7ab2a9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <xsd:element name="doxygenindex" type="DoxygenType"/>
-
-  <xsd:complexType name="DoxygenType">
-    <xsd:sequence>
-      <xsd:element name="compound" type="CompoundType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="version" type="xsd:string" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="CompoundType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-      <xsd:element name="member" type="MemberType" minOccurs="0" maxOccurs="unbounded"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="CompoundKind" use="required"/>
-  </xsd:complexType>
-
-  <xsd:complexType name="MemberType">
-    <xsd:sequence>
-      <xsd:element name="name" type="xsd:string"/>
-    </xsd:sequence>
-    <xsd:attribute name="refid" type="xsd:string" use="required"/>
-    <xsd:attribute name="kind" type="MemberKind" use="required"/>
-  </xsd:complexType>
-  
-  <xsd:simpleType name="CompoundKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="class"/>
-      <xsd:enumeration value="struct"/>
-      <xsd:enumeration value="union"/>
-      <xsd:enumeration value="interface"/>
-      <xsd:enumeration value="protocol"/>
-      <xsd:enumeration value="category"/>
-      <xsd:enumeration value="exception"/>
-      <xsd:enumeration value="file"/>
-      <xsd:enumeration value="namespace"/>
-      <xsd:enumeration value="group"/>
-      <xsd:enumeration value="page"/>
-      <xsd:enumeration value="example"/>
-      <xsd:enumeration value="dir"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-  <xsd:simpleType name="MemberKind">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="define"/>
-      <xsd:enumeration value="property"/>
-      <xsd:enumeration value="event"/>
-      <xsd:enumeration value="variable"/>
-      <xsd:enumeration value="typedef"/>
-      <xsd:enumeration value="enum"/>
-      <xsd:enumeration value="enumvalue"/>
-      <xsd:enumeration value="function"/>
-      <xsd:enumeration value="signal"/>
-      <xsd:enumeration value="prototype"/>
-      <xsd:enumeration value="friend"/>
-      <xsd:enumeration value="dcop"/>
-      <xsd:enumeration value="slot"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
-</xsd:schema>
-
index bec0f07..c771408 100644 (file)
@@ -358,10 +358,14 @@ class Automaton
                        if not goods.has(s) then bads.add(s)
                end
 
-               # Remove their transitions
+               # Remove their transitions and tags
                for s in bads do
                        for t in s.ins.to_a do t.delete
                        for t in s.outs.to_a do t.delete
+                       if tags.has_key(s) then
+                               for t in tags[s] do retrotags[t].remove(s)
+                               tags.keys.remove(s)
+                       end
                end
 
                # Keep only the good stuff
index c2233ef..37922f6 100755 (executable)
@@ -54,21 +54,26 @@ differ() {
                         echo "[***no sav***] cp 'out/$r' sav/"
                         test $verbose = true && { cat "out/$r" ; echo ; }
                        echo >>"$tap" "not ok $tapcount - $name # TODO no sav"
+                       return 1
                 else
                         echo "[0K]"
                        echo >>"$tap" "ok $tapcount - $name"
+                       return 0
                 fi
         elif diff "sav/$r" "out/$r" >/dev/null
         then
                 echo "[OK]"
                echo >>"$tap" "ok $tapcount - $name"
+               return 0
         else
                 echo "[******failed******] diff -u {sav,out}/$r"
                 test $verbose = true && { diff -u "sav/$r" "out/$r" ; echo ; }
                echo >>"$tap" "not ok $tapcount - $name"
+               return 1
         fi
 }
 
+err=0
 for f in "$@"
 do
         for a in "$f" `./alterner.pl $f`
@@ -107,7 +112,7 @@ do
 
                grep -i "error" "out/$bn.nitcc.log" > "out/$res"
                name="$a"
-                differ $res
+                differ $res || err=1
 
                 if test \! -z $cla
                 then
@@ -129,7 +134,7 @@ do
 
                                cp "$langname.ast.out" "out/$resi"
                                name="$a $i"
-                                differ "$resi"
+                                differ "$resi" || err=1
                         done
                 fi
         done
@@ -137,3 +142,4 @@ done
 
 echo >>"$tap" "1..$tapcount"
 #prove --formatter=TAP::Formatter::JUnit /bin/cat :: tap.output > tap.xml
+exit "$err"
index 2e93a74..f1fb6ae 100644 (file)
@@ -612,7 +612,13 @@ end
 #
 # This class provides services that ensure static typing when accessing the `config.ini` file.
 class WikiConfig
-       super ConfigTree
+       super IniFile
+       autoinit ini_file
+
+       # Path to this file
+       var ini_file: String
+
+       init do load_file(ini_file)
 
        # Returns the config value at `key` or return `default` if no key was found.
        protected fun value_or_default(key: String, default: String): String do
@@ -779,8 +785,8 @@ class WikiConfig
        var sidebar_blocks: Array[String] is lazy do
                var res = new Array[String]
                if not has_key("wiki.sidebar.blocks") then return res
-               for val in at("wiki.sidebar.blocks").as(not null).values do
-                       res.add val
+               for val in section("wiki.sidebar.blocks").as(not null).values do
+                       res.add val.as(not null)
                end
                return res
        end
@@ -834,7 +840,13 @@ end
 # Each section can provide its own config file to customize
 # appearance or behavior.
 class SectionConfig
-       super ConfigTree
+       super IniFile
+       autoinit ini_file
+
+       # Path to this file
+       var ini_file: String
+
+       init do load_file(ini_file)
 
        # Returns the config value at `key` or `null` if no key was found.
        private fun value_or_null(key: String): nullable String do
diff --git a/contrib/nitrpg/.gitignore b/contrib/nitrpg/.gitignore
deleted file mode 100644 (file)
index 24c4036..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-.github_data
-nitrpg_data
-listener
-web
diff --git a/contrib/nitrpg/README.md b/contrib/nitrpg/README.md
deleted file mode 100644 (file)
index 5f6a02d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# Welcome to NitRPG!
-
-NitRPG is a Role Playing Game that takes place on [GitHub](https://github.com/).
-
-In NitRPG, GitHub users are represented by players that battle on repo for
-nitcoins and glory.
-
-## Features
-
-* Auto-update with GitHub hooks
-* Display repo statistics
-* Display players statsitics
-* Repo actions are rewarded by nitcoins
-* Players can unlock achievements
-
-## How to install
-
-From the `nit` root:
-
-~~~bash
-> cd contrib/nitrpg
-> make
-~~~
-
-### Configuring the GitHub hook
-
-NitRPG needs you to add a new GitHub hook on your repo to keep the game
-`listener` up-to-date automatically.
-
-Hook configuration:
-
-* **Payload URL**: URL and port to the listener (ex: `http://yourdomain.com:8080`)
-* **Content type**: `application/json`
-* **Wich events**: `Send me everything`
-
-Be sure to set the hook as `Active` in the GitHub admin panel.
-
-### Starting the listener
-
-The `listener` program is used to listen to GitHub hooks and update game data.
-It should alwaysd be up if you want your game to be kept up-to-date.
-
-To run the listener:
-
-~~~raw
-       ./listener <host> <port>
-~~~
-
-The arguments `host` and `port` must correspond to what you entered in your
-GitHub hook settings.
-
-### Starting the web server
-
-The `web` program act as a [nitcorn](http://nitlanguage.org/doc/stdlib/module_nitcorn__nitcorn.html) webserver that display the game results live.
-
-To run the webserver:
-
-~~~raw
-       ./web <host> <port> <root>
-~~~
-
-The arguments `host` and `port` must correspond to what you entered in your
-GitHub hook settings.
-The `root` argument is used to specify the path from the domain url to the
-NitRPG root.
-
-For example, if NitRPG is installed in `yourdomain.com/nitrpg`:
-
-~~~raw
-       ./web localhost 3000 "/nitrpg"
-~~~
-
-Leave it empty if NitRPG is installed at the root of the domain:
-
-~~~raw
-       ./web localhost 3000 ""
-~~~
-
-The webserver can then be accessed at `http://yourdomain.com:3000/nitrpg/`.
-
-## RoadMap
-
-NitRPG stills under heavy development.
-Incomming features contain (but are not limited to):
-
-* Periodized stats (weekly, monthly, yearly, overall)
-* Display graphs with stats
-* More achievements
-* Shop: exchange Nitcoins against glorifying items
-
-You can suggest new achievements or ideas in the
-[NitRPG RoadMap Issue](https://github.com/nitlang/nit/issues/1161).
diff --git a/contrib/nitrpg/nitrpg.user.js b/contrib/nitrpg/nitrpg.user.js
deleted file mode 100644 (file)
index 7e27fa1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// ==UserScript==
-// @name        Github.com - Add RPG tab
-// @namespace   nitlanguage/github/rpg
-// @description Adds a "Github RPG" Tab at the end of the tabs.
-// @include     https://github.com/*
-// @downloadURL https://github.com/nitlang/nit/raw/master/contrib/nitrpg/nitrpg.user.js
-// @version     2
-// @grant       none
-// ==/UserScript==
-
-// The nav bar with tabs
-var nav = document.getElementsByClassName('reponav');
-if (!nav || !nav[0]) return;
-
-// The current repo to link
-var repo = $("meta[name='octolytics-dimension-repository_nwo']").attr("content");
-//repo = "nitlang/nit";
-if (!repo) return;
-
-// The content of the new tab
-var html = '<a href="http://nitlanguage.org/rpg/games/' + repo + '" class="js-selected-navigation-item reponav-item" data-selected-links="nitrpg"><span class="octicon octicon-ruby"></span> Github RPG</a>';
-//html = '<p><span>x</span></p>';
-
-// Inject the new tab
-var div = document.createElement('div');
-div.innerHTML = html;
-nav[0].append(div.firstChild);
diff --git a/contrib/nitrpg/package.ini b/contrib/nitrpg/package.ini
deleted file mode 100644 (file)
index 7db8f35..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=nitrpg
-tags=devel,web,cli
-maintainer=Alexandre Terrasa <alexandre@moz-code.org>
-license=Apache-2.0
-desc=NitRPG, a Role Playing Game that takes place on GitHub
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/nitrpg/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/nitrpg/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/contrib/nitrpg/src/achievements.nit b/contrib/nitrpg/src/achievements.nit
deleted file mode 100644 (file)
index 2097ec3..0000000
+++ /dev/null
@@ -1,532 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# `nitrpg` achievements.
-#
-# Players can unlock achievements by performing remarkable actions on the repo.
-# Achievements are rewarded by nitcoins.
-module achievements
-
-import events
-import statistics
-
-redef class GameEntity
-
-       # Register a new achievement for this game entity.
-       #
-       # Saves the achievement in game data.
-       # Do nothing is the achievement is already registered.
-       #
-       # TODO should update the achievement?
-       fun add_achievement(achievement: Achievement) do
-               stats.inc("achievements")
-               achievement.owner = self
-               achievement.save
-       end
-
-       # Is `a` unlocked for this `Player`?
-       fun has_achievement(a: Achievement): Bool do return load_achievement(a.id) != null
-
-       # Load the event from its `id`.
-       #
-       # Looks for the event save file in game data.
-       # Returns `null` if the event cannot be found.
-       fun load_achievement(id: String): nullable Achievement do
-               var req = new JsonObject
-               req["id"] = id
-               req["game"] = game.key
-               req["owner"] = key
-               var obj = game.db.collection("achievements").find(req)
-               if obj isa JsonObject then
-                       return new Achievement.from_json(game, obj)
-               end
-               return null
-       end
-
-       # List all events registered in this entity.
-       #
-       # This list is reloaded from game data each time its called.
-       #
-       # To add events see `add_event`.
-       fun load_achievements: MapRead[String, Achievement] do
-               var req = new JsonObject
-               req["game"] = game.key
-               req["owner"] = key
-               var res = new HashMap[String, Achievement]
-               for obj in game.db.collection("achievements").find_all(req) do
-                       var achievement = new Achievement.from_json(game, obj)
-                       res[achievement.id] = achievement
-               end
-               return res
-       end
-end
-
-# Achievements are rewarded by `nitcoins`.
-#
-# An achievement represents a notable action performed by a `Player`.
-# Player that `unlock` achievements are rewarded by nitcoins.
-class Achievement
-       super GameEntity
-
-       redef var collection_name = "achievements"
-
-       redef var game
-
-       redef fun key do
-               var owner = self.owner
-               if owner == null then return id
-               return "{owner.key}-{id}"
-       end
-
-       # Uniq ID for this achievement.
-       var id: String
-
-       # Name of this achievement.
-       var name: String
-
-       # Description of the achievement.
-       var desc: String
-
-       # Reward that this achievement give in nitcoins.
-       var reward: Int
-
-       # Is this achievement unlocked by somebody?
-       var is_unlocked: Bool is lazy do return not load_events.is_empty
-
-       # Game entity this achievement is about.
-       var owner: nullable GameEntity = null
-
-       # Init `self` from a `json` object.
-       #
-       # Used to load achievements from storage.
-       init from_json(game: Game, json: JsonObject) do
-               init(game,
-                       json["id"].as(String),
-                       json["name"].as(String),
-                       json["desc"].as(String),
-                       json["reward"].as(Int))
-       end
-
-       redef fun to_json_object do
-               var json = super
-               json["id"] = id
-               json["name"] = name
-               json["desc"] = desc
-               json["reward"] = reward
-               json["game"] = game.key
-               var owner = self.owner
-               if owner != null then json["owner"] = owner.key
-               return json
-       end
-end
-
-redef class Player
-       # Unlocks an achievement for this Player based on a GithubEvent.
-       #
-       # Register the achievement and adds the achievement reward to the player
-       # nitcoins.
-       #
-       # Do nothing is this player has already unlocked the achievement.
-       #
-       # TODO: add abstraction so achievements do not depend on GithubEvent.
-       fun unlock_achievement(a: Achievement, event: GithubEvent) do
-               if has_achievement(a) then return
-               nitcoins += a.reward
-               add_achievement(a)
-               trigger_unlock_event(a, event)
-               save
-       end
-
-       # Create a new event that marks the achievement unlocking.
-       fun trigger_unlock_event(achievement: Achievement, event: GithubEvent) do
-               var obj = new JsonObject
-               obj["player"] = name
-               obj["reward"] = achievement.reward
-               obj["achievement"] = achievement.id
-               obj["github_event"] = event
-               var ge = new GameEvent(game, "achievement_unlocked", obj)
-               add_event(ge)
-               game.add_event(ge)
-               achievement.add_event(ge)
-       end
-end
-
-# `GameReactor` dedicated to achievements unlocking.
-interface AchievementReactor
-       super GameReactor
-
-       # Unic ID of the achievement this reactor unlocks.
-       fun id: String is abstract
-
-       # Name of the achievement this reactor unlocks.
-       fun name: String is abstract
-
-       # Description of the achievement this reactor unlocks.
-       fun desc: String is abstract
-
-       # Amount of nitcoins rewarded for unlocking the achievement.
-       fun reward: Int is abstract
-
-       # Return a new instance of the achievement to unlock.
-       fun new_achievement(game: Game): Achievement do
-               var achievement = new Achievement(game, id, name, desc, reward)
-               game.add_achievement(achievement)
-               return achievement
-       end
-end
-
-#####################
-### Issues
-#####################
-
-# Unlock achievement after X issues.
-#
-# Used to factorize behavior.
-abstract class PlayerXIssues
-       super AchievementReactor
-
-       # Number of PR required to unlock the achievement.
-       var threshold: Int is noinit
-
-       redef fun react_event(game, event) do
-               if not event isa IssuesEvent then return
-               if not event.action == "opened" then return
-               var player = event.issue.user.player(game)
-               if player.stats["issues"] == threshold then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Player open his first issue.
-class Player1Issue
-       super PlayerXIssues
-
-       redef var id = "player_1_issue"
-       redef var name = "First complaint"
-       redef var desc = "Open your first issue."
-       redef var reward = 10
-       redef var threshold = 1
-end
-
-# Player open 100 issues.
-class Player100Issues
-       super PlayerXIssues
-
-       redef var id = "player_100_issues"
-       redef var name = "Mature whiner"
-       redef var desc = "Open 100 issues in the game."
-       redef var reward = 100
-       redef var threshold = 100
-end
-
-# Player open 1 000 issues.
-class Player1KIssues
-       super PlayerXIssues
-
-       redef var id = "player_1000_issues"
-       redef var name = "You, sir, complain a lot"
-       redef var desc = "Open 1000 issues in the game."
-       redef var reward = 1000
-       redef var threshold = 1000
-end
-
-# Player open an issue about nitdoc.
-class IssueAboutNitdoc
-       super AchievementReactor
-
-       redef var id = "issue_about_nitdoc"
-       redef var name = "Say nitdoc again, I double dare you!"
-       redef var desc = "Open an issue with \"nitdoc\" in the title."
-       redef var reward = 10
-
-       redef fun react_event(game, event) do
-               if not event isa IssuesEvent then return
-               if not event.action == "opened" then return
-               var player = event.issue.user.player(game)
-               var re = "nitdoc".to_re
-               re.ignore_case = true
-               if event.issue.title.has(re) then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Player open an issue about FFI.
-class IssueAboutFFI
-       super PlayerXIssues
-
-       redef var id = "issue_about_ffi"
-       redef var name = "Polyglot what?"
-       redef var desc = "Open an issue with `ffi` in the title."
-       redef var reward = 10
-
-       redef fun react_event(game, event) do
-               if not event isa IssuesEvent then return
-               if not event.action == "opened" then return
-               var player = event.issue.user.player(game)
-               var re = "\\bffi\\b".to_re
-               re.ignore_case = true
-               if event.issue.title.has(re) then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-#####################
-### Pull requests
-#####################
-
-# Unlock achievement after X pull requests.
-#
-# Used to factorize behavior.
-abstract class PlayerXPulls
-       super AchievementReactor
-
-       # Number of PR required to unlock the achievement.
-       var threshold: Int is noinit
-
-       redef fun react_event(game, event) do
-               if not event isa PullRequestEvent then return
-               if not event.action == "opened" then return
-               var player = event.pull.user.player(game)
-               if player.stats["pulls"] == threshold then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Open your first pull request.
-class Player1Pull
-       super PlayerXPulls
-
-       redef var id = "player_1_pull"
-       redef var name = "First PR"
-       redef var desc = "Open your first pull request."
-       redef var reward = 10
-       redef var threshold = 1
-end
-
-# Author 100 pull requests.
-class Player100Pulls
-       super PlayerXPulls
-
-       redef var id = "player_100_pulls"
-       redef var name = "100 pull requests!!!"
-       redef var desc = "Open 100 pull requests in the game."
-       redef var reward = 100
-       redef var threshold = 100
-end
-
-# Author 1000 pull requests.
-class Player1KPulls
-       super PlayerXPulls
-
-       redef var id = "player_1000_pulls"
-       redef var name = "1000 PULL REQUESTS!!!"
-       redef var desc = "Open 1000 pull requests in the game."
-       redef var reward = 1000
-       redef var threshold = 1000
-end
-
-#####################
-### Commits
-#####################
-
-# Unlock achievement after X merged commits.
-#
-# Used to factorize behavior.
-abstract class PlayerXCommits
-       super AchievementReactor
-
-       # Number of PR required to unlock the achievement.
-       var threshold: Int is noinit
-
-       redef fun react_event(game, event) do
-               if not event isa PullRequestEvent then return
-               if not event.action == "closed" then return
-               if not event.pull.merged then return
-               var player = event.pull.user.player(game)
-               if player.stats["commits"] >= threshold then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Author your first commit in the game.
-class Player1Commit
-       super PlayerXCommits
-
-       redef var id = "player_1_commit"
-       redef var name = "First blood"
-       redef var desc = "Author your first commit in the game."
-       redef var reward = 10
-       redef var threshold = 1
-end
-
-# Author 100 commits.
-class Player100Commits
-       super PlayerXCommits
-
-       redef var id = "player_100_commits"
-       redef var name = "100 commits"
-       redef var desc = "Author 100 commits in the game."
-       redef var reward = 100
-       redef var threshold = 100
-end
-
-# Author 1 000 commits.
-class Player1KCommits
-       super PlayerXCommits
-
-       redef var id = "player_1000_commits"
-       redef var name = "1000 commits!!!"
-       redef var desc = "Author 1000 commits in the game."
-       redef var reward = 1000
-       redef var threshold = 1000
-end
-
-# Author 10 000 commits.
-class Player10KCommits
-       super PlayerXCommits
-
-       redef var id = "player_10000_commits"
-       redef var name = "10000 COMMITS!!!"
-       redef var desc = "Author 10000 commits in the game."
-       redef var reward = 10000
-       redef var threshold = 10000
-end
-
-#####################
-### Issue Comments
-#####################
-
-# Unlock achievement after X issue comments.
-#
-# Used to factorize behavior.
-abstract class PlayerXComments
-       super AchievementReactor
-
-       # Number of comments required to unlock the achievement.
-       var threshold: Int is noinit
-
-       redef fun react_event(game, event) do
-               if not event isa IssueCommentEvent then return
-               if not event.action == "created" then return
-               var player = event.comment.user.player(game)
-               if player.stats["comments"] == threshold then
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Player author his first comment in issues.
-class Player1Comment
-       super PlayerXComments
-
-       redef var id = "player_1_comment"
-       redef var name = "From lurker to member"
-       redef var desc = "Comment on an issue."
-       redef var reward = 10
-       redef var threshold = 1
-end
-
-# Player author 100 issue comments.
-class Player100Comments
-       super PlayerXComments
-
-       redef var id = "player_100_comments"
-       redef var name = "Chatter"
-       redef var desc = "Comment 100 times on issues."
-       redef var reward = 100
-       redef var threshold = 100
-end
-
-# Player author 1000 issue comments.
-class Player1KComments
-       super PlayerXComments
-
-       redef var id = "player_1000_comments"
-       redef var name = "You sir, talk a lot!"
-       redef var desc = "Comment 1000 times on issues."
-       redef var reward = 1000
-       redef var threshold = 1000
-end
-
-# Ping @privat in a comment.
-class PlayerPingGod
-       super AchievementReactor
-
-       redef var id = "player_ping_god"
-       redef var name = "Ping god"
-       redef var desc = "Ping the owner of the repo for the first time."
-       redef var reward = 50
-
-       redef fun react_event(game, event) do
-               if not event isa IssueCommentEvent then return
-               var owner = game.repo.owner.login
-               if event.comment.body.has("@{owner}".to_re) then
-                       var player = event.comment.user.player(game)
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Give your first +1
-class PlayerFirstReview
-       super AchievementReactor
-
-       redef var id = "player_first_review"
-       redef var name = "First +1"
-       redef var desc = "Give a +1 for the first time."
-       redef var reward = 10
-
-       redef fun react_event(game, event) do
-               if not event isa IssueCommentEvent then return
-               # FIXME use a more precise way to locate reviews
-               if event.comment.is_ack then
-                       var player = event.comment.user.player(game)
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
-
-# Talk about nitcoin in issue comments.
-class PlayerSaysNitcoin
-       super AchievementReactor
-
-       redef var id = "player_says_nitcoin"
-       redef var name = "Talking about money"
-       redef var desc = "Say something about nitcoins in a comment."
-       redef var reward = 10
-
-       redef fun react_event(game, event) do
-               if not event isa IssueCommentEvent then return
-               if event.comment.body.has("(n|N)itcoin".to_re) then
-                       var player = event.comment.user.player(game)
-                       var a = new_achievement(game)
-                       player.unlock_achievement(a, event)
-               end
-       end
-end
diff --git a/contrib/nitrpg/src/events.nit b/contrib/nitrpg/src/events.nit
deleted file mode 100644 (file)
index 08d387d..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# `nitrpg` game events.
-#
-# In this module we introduce the concept of `GameEvent`.
-# They can be attached to every GameEntities.
-module events
-
-import game
-
-redef class GameEntity
-
-       # Register a new game event for this entity.
-       fun add_event(event: GameEvent) do
-               event.owner = self
-               event.save
-       end
-
-       # List all events registered in this entity.
-       #
-       # This list is reloaded from game data each time its called.
-       #
-       # To add events see `add_event`.
-       fun load_events: Array[GameEvent] do
-               var req = new JsonObject
-               req["game"] = game.key
-               req["owner"] = key
-               var res = new Array[GameEvent]
-               for obj in game.db.collection("events").find_all(req) do
-                       res.add new GameEvent.from_json(game, obj)
-               end
-               (new EventTimeComparator).sort(res)
-               return res
-       end
-
-       # Load the event from its `id`.
-       #
-       # Looks for the event save file in game data.
-       # Returns `null` if the event cannot be found.
-       fun load_event(id: String): nullable GameEvent do
-               var req = new JsonObject
-               req["game"] = game.key
-               req["owner"] = key
-               req["internal_id"] = id
-               var res = game.db.collection("events").find(req)
-               if res != null then return new GameEvent.from_json(game, res)
-               return null
-       end
-end
-
-# An event that occurs in the `Game`.
-class GameEvent
-       super GameEntity
-
-       redef var collection_name = "events"
-
-       redef var game
-
-       # Entity this event belongs to.
-       var owner: nullable GameEntity = null
-
-       # String used to dissociate events in the display.
-       var kind: String
-
-       # GameEvents have raw data associated to them.
-       #
-       # These data are stored in a JsonObject.
-       var data: JsonObject is writable
-
-       # GameEvent uniq id used for storage.
-       var internal_id: String is noinit
-
-       redef var key = internal_id is lazy
-
-       # Date and time of the event.
-       var time: ISODate is noinit, writable
-
-       # An event initialized at now `time`.
-       init do
-               internal_id = "{get_time}{object_id}{100.rand}"
-               time = new ISODate
-       end
-
-       # Init `self` from a `json` object.
-       #
-       # Used to load events from json storage.
-       init from_json(game: Game, json: JsonObject) do
-               init(game, json["kind"].as(String), json["data"].as(JsonObject))
-               internal_id = json["internal_id"].as(String)
-               time = new ISODate.from_string(json["time"].as(String))
-       end
-
-       redef fun to_json_object do
-               var json = new JsonObject
-               json["internal_id"] = internal_id.to_s
-               json["kind"] = kind
-               json["time"] = time.to_s
-               json["data"] = data
-               json["game"] = game.key
-               var owner = self.owner
-               if owner != null then json["owner"] = owner.key
-               return json
-       end
-end
-
-# Compare `GameEvent` to sort them from the most recent to the older.
-class EventTimeComparator
-       super Comparator
-
-       redef type COMPARED: GameEvent
-
-       redef fun compare(a, b) do return b.time <=> a.time
-end
diff --git a/contrib/nitrpg/src/events_generator.nit b/contrib/nitrpg/src/events_generator.nit
deleted file mode 100644 (file)
index 9e5bf30..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generate Github events from repo data.
-#
-# Mainly used for testing and history importation.
-module events_generator
-
-import github::events
-
-# Github events generator
-#
-# Generates events from repo data.
-class EventsGenerator
-
-       # API client used to get github data.
-       var api: GithubAPI
-
-       # Gen a fake id for events
-       fun gen_event_id: String do return get_time.to_s
-
-       # Issues
-
-       # Generate a new IssuesEvent from an issue.
-       fun issues_event(repo: Repo, action: String, issue: Issue): IssuesEvent do
-               return new IssuesEvent(gen_event_id, action, repo, issue)
-       end
-
-       # Generate a new IssuesEvent with an `opened` action.
-       fun issue_open(repo: Repo, issue: Issue): IssuesEvent do
-               return issues_event(repo, "opened", issue)
-       end
-
-       # Generate a new IssuesEvent with an `closed` action.
-       fun issue_close(repo: Repo, issue: Issue): IssuesEvent do
-               return issues_event(repo, "closed", issue)
-       end
-
-       # Generate a new IssuesEvent with an `reopened` action.
-       fun issue_reopen(repo: Repo, issue: Issue): IssuesEvent do
-               return issues_event(repo, "reopened", issue)
-       end
-
-       # Generate a new IssuesEvent from a IssueEvent.
-       fun issue_raw_event(repo: Repo, issue: Issue, event: IssueEvent): IssuesEvent do
-               return new IssuesEvent(event.id.to_s, event.event, repo, issue, event.labl, event.assignee)
-       end
-
-       # Generate a new IssueCommentEvent from a IssueComment.
-       fun issue_comment_event(repo: Repo, issue: Issue, comment: IssueComment): IssueCommentEvent do
-               return new IssueCommentEvent(gen_event_id, "created", repo, issue, comment)
-       end
-
-       # Pull requests
-
-       # Generate a new PullRequestEvent from a `pull` request.
-       fun pull_event(repo: Repo, action: String, pull: PullRequest): PullRequestEvent do
-               return new PullRequestEvent(gen_event_id, action, repo, pull.number, pull)
-       end
-
-       # Generate a new PullRequestEvent with an `opened` action.
-       fun pull_open(repo: Repo, pull: PullRequest): PullRequestEvent do
-               return pull_event(repo, "opened", pull)
-       end
-
-       # Generate a new PullRequestEvent with an `closed` action.
-       fun pull_close(repo: Repo, pull: PullRequest): PullRequestEvent do
-               return pull_event(repo, "closed", pull)
-       end
-
-       # Generate a new PullRequestEvent with an `reopened` action.
-       fun pull_reopen(repo: Repo, pull: PullRequest): PullRequestEvent do
-               return pull_event(repo, "reopened", pull)
-       end
-
-       # Generate a new PullRequestEvent from a IssueEvent.
-       fun pull_raw_event(repo: Repo, pull: PullRequest, event: IssueEvent): PullRequestEvent do
-               return new PullRequestEvent(event.id.to_s, event.event, repo, pull.number, pull)
-       end
-end
diff --git a/contrib/nitrpg/src/game.nit b/contrib/nitrpg/src/game.nit
deleted file mode 100644 (file)
index 5413f43..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# `nitrpg` game structures.
-#
-# Here we define the main game entities:
-#
-# * `Game` holds all the entities for a game and provides high level services.
-# * `Player` represents a `Github::User` which plays the `Game`.
-#
-# Developpers who wants to extend the game capabilities should look at
-# the `GameReactor` abstraction.
-module game
-
-import mongodb
-import github::events
-
-# An entity within a `Game`.
-#
-# All game entities can be saved in a json format.
-interface GameEntity
-       # The game instance containing `self`.
-       fun game: Game is abstract
-
-       # Collection `self` should be saved in.
-       fun collection_name: String is abstract
-
-       # Uniq key of this entity within the collection.
-       fun key: String is abstract
-
-       # Saves `self` in db.
-       fun save do game.db.collection(collection_name).save(to_json_object)
-
-       # Json representation of `self`.
-       fun to_json_object: JsonObject do
-               var json = new JsonObject
-               json["_id"] = key
-               return json
-       end
-
-       # Pretty print `self` to be displayed in a terminal.
-       fun pretty: String is abstract
-end
-
-# Holder for game data and main services.
-#
-# Game is a `GameEntity` so it can be saved.
-class Game
-       super GameEntity
-
-       redef fun game do return self
-
-       # We need a `GithubAPI` client to load Github data.
-       var api: GithubAPI
-
-       # A game takes place in a `github::Repo`.
-       var repo: Repo
-
-       # Game name
-       var name: String = repo.full_name is lazy
-
-       redef var key = name is lazy
-
-       # Mongo server url where this game data are stored.
-       var mongo_url = "mongodb://mongo:27017" is writable
-
-       # Mongo db client.
-       var client = new MongoClient(mongo_url) is lazy
-
-       # Mongo db name where this game data are stored.
-       var db_name = "nitrpg" is writable
-
-       # Mongo db instance for this game.
-       var db: MongoDb is lazy do return client.database(db_name)
-
-       redef var collection_name = "games"
-
-       # Init the Game and try to load saved data.
-       init from_mongo(api: GithubAPI, repo: Repo) do
-               init(api, repo)
-               var req = new JsonObject
-               req["name"] = repo.full_name
-               var res = db.collection("games").find(req)
-               if res != null then from_json(res)
-       end
-
-       # Init `self` from a JsonObject.
-       #
-       # Used to load entities from saved data.
-       fun from_json(json: JsonObject) do end
-
-       redef fun to_json_object do
-               var json = super
-               json["name"] = name
-               return json
-       end
-
-       # Create a player from a Github `User`.
-       #
-       # Or return the existing one from game data.
-       fun add_player(user: User): Player do
-               # check if player already exists
-               var player = load_player(user.login)
-               if player != null then return player
-               # create and store new player
-               player = new Player(self, user.login)
-               player.save
-               return player
-       end
-
-       # Get a Player from his `name` or null if no player was found.
-       #
-       # Looks for the player save file in game data.
-       #
-       # Returns `null` if the player cannot be found.
-       # In this case, the player can be created with `add_player`.
-       fun load_player(name: String): nullable Player do
-               var req = new JsonObject
-               req["name"] = name
-               req["game"] = game.key
-               var res = db.collection("players").find(req)
-               if res != null then return new Player.from_json(self, res)
-               return null
-       end
-
-       # List known players.
-       #
-       # This list is reloaded from game data each time its called.
-       #
-       # To add players see `add_player`.
-       fun load_players: MapRead[String, Player] do
-               var req = new JsonObject
-               req["game"] = game.key
-               var res = new HashMap[String, Player]
-               for obj in db.collection("players").find_all(req) do
-                       var player = new Player.from_json(self, obj)
-                       res[player.name] = player
-               end
-               return res
-       end
-
-       # Return a list of player name associated to their rank in the game.
-       fun player_ranking: MapRead[String, Int] do
-               var arr = load_players.values.to_a
-               var res = new HashMap[String, Int]
-               (new PlayerCoinComparator).sort(arr)
-               var rank = 1
-               for player in arr do
-                       res[player.name] = rank
-                       rank += 1
-               end
-               return res
-       end
-
-       # Erase all saved data for this game.
-       fun clear do db.collection(collection_name).remove(to_json_object)
-
-       # Verbosity level used fo stdout.
-       #
-       # * `-1` quiet
-       # * `0` error and warnings
-       # * `1` info
-       # * `2` debug
-       var verbose_lvl = 0 is writable
-
-       # Display `msg` if `lvl` >= `verbose_lvl`
-       fun message(lvl: Int, msg: String) do
-               if lvl > verbose_lvl then return
-               print msg
-       end
-
-       redef fun pretty do
-               var res = new FlatBuffer
-               res.append "-------------------------\n"
-               res.append "{repo.full_name}\n"
-               res.append "-------------------------\n"
-               res.append "# {load_players.length} players \n"
-               return res.write_to_string
-       end
-end
-
-# Players can battle on nitrpg for nitcoins and glory.
-#
-# A `Player` is linked to a `Github::User`.
-class Player
-       super GameEntity
-
-       # Stored in collection `players`.
-       redef var collection_name = "players"
-
-       redef var game
-
-       # FIXME contructor should be private
-
-       # Player name.
-       #
-       # This is the unic key for this player.
-       # Should be equal to the associated `Github::User::login`.
-       #
-       # The name is also used to load the user data lazilly from Github API.
-       var name: String
-
-       redef var key = name is lazy
-
-       # Player amount of nitcoins.
-       #
-       # Nitcoins is the currency used in nitrpg.
-       # They can be obtained by performing actions on the `Game::Repo`.
-       var nitcoins: Int = 0 is public writable
-
-       # `Github::User` linked to this player.
-       var user: User is lazy do
-               var user = game.api.load_user(name)
-               assert user isa User
-               return user
-       end
-
-       # Init `self` from a `json` object.
-       #
-       # Used to load players from saved data.
-       init from_json(game: Game, json: JsonObject) do
-               init(game, json["name"].as(String))
-               nitcoins = json["nitcoins"].as(Int)
-       end
-
-       redef fun to_json_object do
-               var json = super
-               json["game"] = game.key
-               json["name"] = name
-               json["nitcoins"] = nitcoins
-               return json
-       end
-
-       redef fun pretty do
-               var res = new FlatBuffer
-               res.append "-- {name} ({nitcoins} $)\n"
-               return res.write_to_string
-       end
-
-       redef fun to_s do return name
-end
-
-redef class User
-       # The player linked to `self`.
-       fun player(game: Game): Player do
-               var player = player_cache.get_or_null(game)
-               if player != null then return player
-               player = game.load_player(login)
-               if player == null then player = game.add_player(self)
-               player_cache[game] = player
-               return player
-       end
-
-       private var player_cache = new HashMap[Game, Player]
-end
-
-# A GameReactor reacts to event sent by a `Github::HookListener`.
-#
-# Subclasses of `GameReactor` are implemented to handle all kind of
-# `GithubEvent`.
-# Depending on the received event, the reactor is used to update game data.
-#
-# Reactors are mostly used with a `Github::HookListener` that dispatchs received
-# events from the Github API.
-#
-# Example:
-#
-# ~~~
-# import github::hooks
-#
-# # Reactor that prints received events in console.
-# class PrintReactor
-#      super GameReactor
-#
-#      redef fun react_event(game, e) do print e
-# end
-#
-# # Hook listener that redirect events to reactors.
-# class RpgHookListener
-#    super HookListener
-#
-#      redef fun apply_event(event) do
-#              var game = new Game(api, event.repo)
-#              var reactor = new PrintReactor
-#              reactor.react_event(game, event)
-#      end
-# end
-# ~~~
-#
-# See module `reactors` and `listener` for more examples.
-interface GameReactor
-
-       # Reacts to this `event` and update `game` accordingly.
-       #
-       # Concrete `GameReactor` implement this method to update game data
-       # for each specific GithubEvent.
-       fun react_event(game: Game, event: GithubEvent) is abstract
-end
-
-# utils
-
-# Sort games by descending number of players.
-#
-# The first in the list is the game with the more players.
-class GamePlayersComparator
-       super Comparator
-
-       redef type COMPARED: Game
-
-       redef fun compare(a, b) do
-               return b.load_players.length <=> a.load_players.length
-       end
-end
-
-# Sort players by descending number of nitcoins.
-#
-# The first in the list is the player with the more of nitcoins.
-class PlayerCoinComparator
-       super Comparator
-
-       redef type COMPARED: Player
-
-       redef fun compare(a, b) do return b.nitcoins <=> a.nitcoins
-end
diff --git a/contrib/nitrpg/src/listener.nit b/contrib/nitrpg/src/listener.nit
deleted file mode 100644 (file)
index 8bee99b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This tool is runned to listen to `Github::Event` and update the game.
-module listener
-
-import reactors
-import achievements
-import github::hooks
-
-# `HookListener` that redirects events to a `Game` instance.
-class RpgHookListener
-   super HookListener
-
-       # Registered reactors list.
-       var reactors = new Array[GameReactor]
-
-       # Dispatch event to registered `reactors`.
-       redef fun apply_event(event) do
-               var game = new Game(api, event.repo)
-               # TODO handle verbosity with opts
-               game.verbose_lvl = 1
-               game.message(1, "Received event {event} for {game.repo.full_name}")
-               for reactor in reactors do
-                       game.message(2, "Apply reactor {reactor} on {event}")
-                       reactor.react_event(game, event)
-               end
-       end
-
-       # Register a reactor for this listener.
-       fun add_reactor(reactors: GameReactor...) do self.reactors.add_all reactors
-end
-
-if args.length != 2 then
-       print "Error: missing argument"
-       print ""
-       print "Usage:"
-       print "listener <host> <port>"
-       exit 1
-end
-
-var host = args[0]
-var port = args[1].to_i
-
-var api = new GithubAPI(get_github_oauth)
-
-var l = new RpgHookListener(api, host, port)
-l.add_reactor(new StatisticsReactor, new PlayerReactor)
-l.add_reactor(new Player1Issue, new Player100Issues, new Player1KIssues)
-l.add_reactor(new Player1Pull, new Player100Pulls, new Player1KPulls)
-l.add_reactor(new Player1Commit, new Player100Commits, new Player1KCommits)
-l.add_reactor(new IssueAboutNitdoc, new IssueAboutFFI)
-l.add_reactor(new Player1Comment, new Player100Comments, new Player1KComments)
-l.add_reactor(new PlayerPingGod, new PlayerFirstReview, new PlayerSaysNitcoin)
-
-print "Listening events on {host}:{port}"
-l.listen
diff --git a/contrib/nitrpg/src/reactors.nit b/contrib/nitrpg/src/reactors.nit
deleted file mode 100644 (file)
index 616bd8a..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Various implementations of `GameReactor` can be found here.
-module reactors
-
-import events
-
-# Reacts to event that can affect players (like giving nitcoins).
-class PlayerReactor
-       super GameReactor
-
-       # Nitcoins rewarded when the player opens a new pull request.
-       var nc_pull_open = 10
-
-       # Nitcoins rewarded when the player reviews a pull request.
-       var nc_pull_review = 2
-
-       # Nitcoins rewarded when the player has a commit merged.
-       var nc_commit_merged = 1
-
-       redef fun react_event(game, e) do e.react_player_event(self, game)
-end
-
-redef class GithubEvent
-       # Reacts to a player related event.
-       #
-       # Called by `PlayerReactor::react_event`.
-       # No-op by default.
-       private fun react_player_event(reactor: PlayerReactor, game: Game) do end
-
-       # Generates a GameEvent preinitialized for a reward event.
-       private fun player_reward_event(kind: String, player: Player, reward: Int): GameEvent do
-               var obj = new JsonObject
-               obj["player"] = player.name
-               obj["reward"] = reward
-               obj["github_event"] = self
-               var event = new GameEvent(player.game, kind, obj)
-               player.game.add_event(event)
-               return event
-       end
-end
-
-redef class PullRequestEvent
-
-       # Rewards player for opened pull requests.
-       redef fun react_player_event(r, game) do
-               if action == "opened" or action == "reopened" then
-                       react_pull_open(r, game)
-               else if action == "closed" then
-                       react_pull_close(r, game)
-               end
-       end
-
-       private fun react_pull_open(r: PlayerReactor, game: Game) do
-               var player = pull.user.player(game)
-               player.nitcoins += r.nc_pull_open
-               player.save
-               var event = player_reward_event("pull_open", player, r.nc_pull_open)
-               player.add_event(event)
-       end
-
-       private fun react_pull_close(r: PlayerReactor, game: Game) do
-               var player = pull.user.player(game)
-               var reward
-               var event
-               if pull.merged then
-                       reward = pull.commits * r.nc_commit_merged
-                       event = player_reward_event("pull_merged", player, reward)
-               else
-                       reward = -r.nc_pull_open
-                       event = player_reward_event("pull_closed", player, reward)
-               end
-               player.nitcoins += reward
-               player.save
-               player.add_event(event)
-       end
-end
-
-redef class IssueCommentEvent
-
-       # Rewards player for review comments.
-       #
-       # TODO only give nitcoins if reviewers < 2
-       # TODO give more points to first reviewer
-       redef fun react_player_event(r, game) do
-               if comment.is_ack then
-                       react_player_review(r, game)
-               end
-       end
-
-       # TODO same player should not be authorized to review multiple times? How to handle rerols?
-       private fun react_player_review(r: PlayerReactor, game: Game) do
-               if issue.state == "closed" then return
-               var player = comment.user.player(game)
-               if issue.user == player.user then return
-               player.nitcoins += r.nc_pull_review
-               player.save
-               var event = player_reward_event("pull_review", player, r.nc_pull_review)
-               player.add_event(event)
-       end
-end
diff --git a/contrib/nitrpg/src/statistics.nit b/contrib/nitrpg/src/statistics.nit
deleted file mode 100644 (file)
index 764616f..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Statistics about the Game.
-#
-# This module uses `GameReactor` to extract statistics about the game from
-# triggered `Github::Event`.
-module statistics
-
-import game
-import github::hooks
-import counter
-
-redef class GameEntity
-
-       # Statistics manager for this entity.
-       fun stats: GameStatsManager is abstract
-end
-
-redef class Game
-
-       redef var stats is lazy do return new GameStatsManager(game, self)
-
-       redef fun pretty do
-               var res = new FlatBuffer
-               res.append super
-               res.append "# stats:\n"
-               res.append stats.pretty
-               return res.write_to_string
-       end
-
-       redef fun save do
-               super
-               stats.save
-       end
-end
-
-redef class Player
-
-       redef var stats is lazy do return new GameStatsManager(game, self)
-
-       redef fun nitcoins do return stats["nitcoins"]
-       redef fun nitcoins=(nc) do stats["nitcoins"] = nc
-
-       redef fun pretty do
-               var res = new FlatBuffer
-               res.append super
-               res.append "# stats:\n"
-               res.append stats.pretty
-               return res.write_to_string
-       end
-
-       redef fun save do
-               super
-               stats.save
-       end
-end
-
-# Store game stats for defined period.
-class GameStatsManager
-       super GameEntity
-       super Counter[String]
-
-       redef var game
-
-       # The GameEntity monitored by these statistics.
-       var owner: GameEntity
-
-       # Current date to extract stats
-       private var date = new Tm.gmtime
-
-       # Returns the `GameStats` instance for the overall statistics.
-       var overall: GameStats = load_stats_for("all") is lazy
-
-       # Returns the `GameStats` instance for the current year statistics.
-       var yearly: GameStats = load_stats_for(date.strftime("%Y")) is lazy
-
-       # Returns the `GameStats` instance for the current month statistics.
-       var monthly: GameStats = load_stats_for(date.strftime("%Y-%m")) is lazy
-
-       # Returns the `GameStats` instance for the current day statistics.
-       var daily: GameStats = load_stats_for(date.strftime("%Y-%m-%d")) is lazy
-
-       # Returns the `GameStats` instance for the current week statistics.
-       var weekly: GameStats = load_stats_for(date.strftime("%Y-W%U")) is lazy
-
-       # Load statistics for a `period` key.
-       fun load_stats_for(period: String): GameStats do
-               var req = new JsonObject
-               req["period"] = period
-               req["owner"] = owner.key
-               var obj = game.db.collection("statistics").find(req)
-               if obj isa JsonObject then
-                       return new GameStats.from_json(game, period, owner, obj)
-               else
-                       return new GameStats(game, period, owner)
-               end
-       end
-
-       redef fun [](key) do return overall[key]
-
-       redef fun []=(key, value) do
-               overall[key] = value
-               yearly[key] = value
-               monthly[key] = value
-               daily[key] = value
-               weekly[key] = value
-       end
-
-       redef fun inc(e) do
-               overall.inc(e)
-               yearly.inc(e)
-               monthly.inc(e)
-               daily.inc(e)
-               weekly.inc(e)
-       end
-
-       redef fun dec(e) do
-               overall.dec(e)
-               yearly.dec(e)
-               monthly.dec(e)
-               daily.dec(e)
-               weekly.dec(e)
-       end
-
-       redef fun save do
-               overall.save
-               yearly.save
-               monthly.save
-               daily.save
-               weekly.save
-       end
-
-       redef fun pretty do return overall.pretty
-end
-
-# Game statistics structure that can be saved as a `GameEntity`.
-class GameStats
-       super GameEntity
-       super Counter[String]
-
-       redef var game
-
-       redef var collection_name = "statistics"
-
-       # The period these stats are about.
-       var period: String
-
-       # The game entity these stats are about.
-       var owner: GameEntity
-
-       redef var key = "{owner.key}-{period}" is lazy
-
-       # Load `self` from saved data.
-       init from_json(game: Game, period: String, owner: GameEntity, json: JsonObject) do
-               init(game, period, owner)
-               var values = json.get_or_null("values")
-               if not values isa JsonObject then return
-               for k, v in values do self[k] = v.as(Int)
-       end
-
-       redef fun to_json_object do
-               var obj = super
-               obj["period"] = period
-               obj["owner"] = owner.key
-               var values = new JsonObject
-               values.add_all(self)
-               obj["values"] = values
-               return obj
-       end
-
-       redef fun pretty do
-               var res = new FlatBuffer
-               for k, v in self do
-                       res.append "# {v} {k}\n"
-               end
-               return res.write_to_string
-       end
-end
-
-# `GameReactor` that computes statistics about the game.
-class StatisticsReactor
-       super GameReactor
-
-       redef fun react_event(game, e) do e.react_stats_event(game)
-end
-
-redef class GithubEvent
-       # Reacts to a statistics related event.
-       #
-       # Called by `StatisticsReactor::react_event`.
-       # No-op by default.
-       private fun react_stats_event(game: Game) do end
-end
-
-redef class IssuesEvent
-
-       # Count opened and closed issues.
-       redef fun react_stats_event(game) do
-               var player = issue.user.player(game)
-               if action == "opened" then
-                       game.stats.inc("issues")
-                       game.stats.inc("issues_open")
-                       game.save
-                       player.stats.inc("issues")
-                       player.stats.inc("issues_open")
-                       player.save
-               else if action == "reopened" then
-                       game.stats.inc("issues_open")
-                       game.save
-                       player.stats.inc("issues_open")
-                       player.save
-               else if action == "closed" then
-                       game.stats.dec("issues_open")
-                       game.save
-                       player.stats.dec("issues_open")
-                       player.save
-               end
-       end
-end
-
-redef class PullRequestEvent
-
-       # Count opened and closed pull requests.
-       redef fun react_stats_event(game) do
-               var player = pull.user.player(game)
-               if action == "opened" then
-                       game.stats.inc("pulls")
-                       game.stats.inc("pulls_open")
-                       game.save
-                       player.stats.inc("pulls")
-                       player.stats.inc("pulls_open")
-                       player.save
-               else if action == "reopened" then
-                       game.stats.inc("pulls_open")
-                       game.save
-                       player.stats.inc("pulls_open")
-                       player.save
-               else if action == "closed" then
-                       game.stats.dec("pulls_open")
-                       player.stats.dec("pulls_open")
-                       if pull.merged then
-                               game.stats["commits"] += pull.commits
-                               player.stats["commits"] += pull.commits
-                       end
-                       game.save
-                       player.save
-               end
-       end
-end
-
-redef class IssueCommentEvent
-
-       # Count posted comments
-       redef fun react_stats_event(game) do
-               if action == "created" then
-                       var player = comment.user.player(game)
-                       game.stats.inc("comments")
-                       player.stats.inc("comments")
-                       # FIXME use a more precise way to locate reviews
-                       if comment.is_ack then
-                               game.stats.inc("reviews")
-                               player.stats.inc("reviews")
-                       end
-                       game.save
-                       player.save
-               end
-       end
-end
diff --git a/contrib/nitrpg/src/templates/panels.nit b/contrib/nitrpg/src/templates/panels.nit
deleted file mode 100644 (file)
index 8f27a5f..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Panels templates for `nitpg`.
-module panels
-
-import templates_events
-import markdown
-
-# A panel can be displayed in a html page.
-#
-# This display a Bootstrap panel.
-class Panel
-       super Template
-
-       redef fun rendering do
-               add """<div class="panel panel-default">
-                           <div class="panel-heading">
-                                <h3 class="panel-title">"""
-               render_title
-               add """  </h3>
-                           </div>
-                          <div class="panel-body">"""
-               render_body
-               add """</div>
-                         </div>"""
-       end
-
-       # Render the panel title.
-       # Betweem `<h4>` tags.
-       fun render_title do end
-
-       # Render the panel body.
-       fun render_body do end
-end
-
-# A panel that contain only a table as body.
-class TablePanel
-       super Panel
-
-       redef fun rendering do
-               add """<div class="panel panel-default">
-                           <div class="panel-heading">
-                            <h3 class="panel-title">"""
-               render_title
-               add """
-                            </h3>
-                           </div>"""
-               render_body
-               add """</div>"""
-       end
-end
-
-# Display an error message within a panel.
-class ErrorPanel
-       super Panel
-
-       redef fun rendering do
-               add """
-<div class="panel panel-danger">
-       <div class="panel-heading">
-               <h3 class="panel-title">"""
-               render_title
-               add """
-               </h3>
-       </div>
-       <div class="panel-body">"""
-               render_body
-               add """
-       </div>
-</div>
-"""
-       end
-
-       # The error message to display as panel body.
-       var msg: String
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-warning-sign\"></span>&nbsp;&nbsp;"
-               add "Error"
-       end
-
-       redef fun render_body do
-               add msg.html_escape
-       end
-
-end
-
-# A panel that display a markdown content rendered as HTML.
-class MDPanel
-       super Panel
-
-       # Markdown text to display.
-       var text: String
-
-       redef fun rendering do
-               add """<div class="panel">
-                           <div class="panel-body">{{{text.md_to_html}}}</div>
-                         </div>"""
-       end
-end
-
-# Display a list of active game.
-#
-# Used for NitRPG homepage.
-class GamesShortListPanel
-       super Panel
-
-       # Root url used for links.
-       var root_url: String
-
-       # List of NitRPG games to display.
-       var games: Array[Game]
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-home\"></span>&nbsp;&nbsp;"
-               add "<a href=\"{root_url}/games\">Active games</a>"
-       end
-
-       redef fun render_body do
-               if games.is_empty then
-                       add "<em>No game yet...</em>"
-                       return
-               end
-               var sorted = games.to_a
-               (new GamePlayersComparator).sort(sorted)
-               for game in sorted do
-                       add "{game.link} ({game.load_players.length} players)<br>"
-               end
-       end
-end
-
-# A panel that display a list of player in a repo.
-class GamesListPanel
-       super GamesShortListPanel
-       super TablePanel
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-home\"></span>&nbsp;&nbsp;"
-               add "<a href=\"{root_url}/games\">Active games</a>"
-       end
-
-       redef fun render_body do
-               if games.is_empty then
-                       add "<div class=\"panel-body\">"
-                       add "<em>No player yet...</em>"
-                       add "</div>"
-                       return
-               end
-               var sorted = games.to_a
-               (new GamePlayersComparator).sort(sorted)
-               add """<table class="table table-striped table-hover">
-                           <tr>
-                                <th>Game</th>
-                                <th>Players</th>
-                                <th>Achievements</th>
-                               </tr>"""
-               for game in sorted do
-                       add "<tr>"
-                       add " <td>{game.link}</td>"
-                       add " <td>{game.load_players.length}</td>"
-                       add " <td>{game.load_achievements.length}</td>"
-                       add "</tr>"
-               end
-               add "</table>"
-       end
-end
-
-# A panel that display repo statistics.
-class GameStatusPanel
-       super Panel
-
-       # Repo to display.
-       var game: Game
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-home\"></span>&nbsp;&nbsp;"
-               add "{game.link}"
-       end
-
-       redef fun render_body do
-               add "<strong class=\"text-success\">{game.load_players.length}</strong>"
-               add " <a href=\"{game.url}/players\">players</a><br>"
-               add "<strong class=\"text-success\">{game.stats["achievements"]}</strong>"
-               add " <a href=\"{game.url}/achievements\">achievements</a><br><br>"
-               add "<strong class=\"text-success\">{game.stats["pulls"]}</strong> pull requests"
-               add " (<strong>{game.stats["pulls_open"]}</strong> open)<br>"
-               add "<strong class=\"text-success\">{game.stats["issues"]}</strong> issues"
-               add " (<strong>{game.stats["issues_open"]}</strong> open)<br>"
-               add "<strong class=\"text-success\">{game.stats["commits"]}</strong> commits"
-       end
-end
-
-# Player status panel.
-class PlayerStatusPanel
-       super Panel
-
-       # Game instance.
-       var game: Game
-
-       # Target player.
-       var player: Player
-
-       redef fun render_title do
-               add "<a href=\"{player.url}\">"
-               add " <img class=\"img-circle\" style=\"width: 30px\""
-               add "   src=\"{player.user.avatar_url or else "#"}\" alt=\"{player.name}\">"
-               add "</a>&nbsp;&nbsp;{player.link}"
-       end
-
-       redef fun render_body do
-               var ranking = game.player_ranking
-               # TODO player.rank
-               add "<p class=\"lead\">ranked "
-               add " <span class=\"text-success\"># {ranking[player.name]}</span></p>"
-               add "<strong class=\"text-success\">{player.nitcoins}</strong> nitcoins<br><br>"
-               add "<strong class=\"text-success\">{player.stats["achievements"]}</strong> achievements<br><br>"
-               add "<strong>{player.stats["pulls"]}</strong> pull requests<br>"
-               add "<strong>{player.stats["issues"]}</strong> issues<br>"
-               add "<strong>{player.stats["commits"]}</strong> commits"
-       end
-end
-
-# A panel that display a list of player in a repo.
-class ShortListPlayersPanel
-       super Panel
-
-       # Game instance.
-       var game: Game
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-user\"></span>&nbsp;&nbsp;"
-               add "<a href=\"{game.url}/players\">Players</a>"
-       end
-
-       redef fun render_body do
-               var players = game.load_players.values.to_a
-               if players.is_empty then
-                       add "<em>No player yet...</em>"
-                       return
-               end
-               (new PlayerCoinComparator).sort(players)
-               for player in players do
-                       add "{player.nitcoins} - {player.link}<br>"
-               end
-       end
-end
-
-# A panel that display a list of player in a repo.
-class ListPlayersPanel
-       super TablePanel
-
-       # Game instance.
-       var game: Game
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-user\"></span>&nbsp;&nbsp;"
-               add "<a href=\"{game.url}/players\">Players</a>"
-       end
-
-       redef fun render_body do
-               var players = game.load_players.values.to_a
-               (new PlayerCoinComparator).sort(players)
-               if players.is_empty then
-                       add "<div class=\"panel-body\">"
-                       add "<em>No player yet...</em>"
-                       add "</div>"
-                       return
-               end
-               add """<table class="table table-striped table-hover">
-                           <tr>
-                                <th>#</th>
-                                <th>Player</th>
-                                <th>Nitcoins</th>
-                               </tr>"""
-               var rank = 1
-               for player in players do
-                       add "<tr>"
-                       add " <td>{rank}</td>"
-                       add " <td>{player.link}</td>"
-                       add " <td>{player.nitcoins}</td>"
-                       add "</tr>"
-                       rank += 1
-               end
-               add "</table>"
-       end
-end
-
-# A panel that display the podium.
-class PodiumPanel
-       super Panel
-
-       # Game instance.
-       var game: Game
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-stats\"></span>&nbsp;&nbsp;Hall of fame"
-       end
-
-       redef fun render_body do
-               var players = game.load_players.values.to_a
-               (new PlayerCoinComparator).sort(players)
-               if players.is_empty then
-                       add "<em>No players yet...</em>"
-                       return
-               end
-               add """
-                       <div class="container-fluid">
-                               <div id="podium" class="row row-sm-height">"""
-               var max = players.first.nitcoins
-               var orders = [3, 1, 0, 2, 4]
-               for order in orders do
-                       if order >= players.length then continue
-                       var player = players[order]
-                       var size = 0
-                       if max > 0 then size = player.nitcoins * 300 / max
-                       add """
-                               <div class="col-xs-2 col-xs-height col-xs-offset-{{{order}}} col-bottom"
-                                       style="text-align: center;">
-                                       <p>
-                                               <a href="{{{player.url}}}">
-                                                       <img class="img-circle" style="width: 80px"
-                                                               src="{{{player.user.avatar_url or else "#"}}}" alt="{{{player.name}}}">
-                                               </a>
-                                       </p>
-                                       <p>{{{player.link}}}</p>
-                                       <p>{{{player.nitcoins}}}</p>
-                                       <div class=" progress-bar-warning progress-bar-striped"
-                                               style="height: {{{size}}}px;"></div>
-                               </div>"""
-               end
-               add """
-                               </div>
-                       </div>"""
-       end
-end
-
-# A `Panel` that displays the list of PR to review for a `Player`.
-class PlayerReviewsPanel
-       super Panel
-
-       # Repo to display.
-       var game: Game
-
-       # Player to display customized list for.
-       var player: Player
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-check\"></span>&nbsp;&nbsp;"
-               add "Review pull requests and comment issues to gain nitcoins!"
-       end
-
-       redef fun render_body do
-               var q = "is:open label:need_review sort:updated-asc " +
-                       "-involves:{player.name}"
-
-               var q2 = "is:open label:request_for_comments sort:updated-asc " +
-                       "-involves:{player.name}"
-
-               var issues = new ArraySet[Issue]
-               issues.add_all game.api.search_repo_issues(game.repo, q)
-               issues.add_all game.api.search_repo_issues(game.repo, q2)
-               if issues.is_empty then
-                       add "<em>No pull request or issue to review yet...</em>"
-                       return
-               end
-               for issue in issues do
-                       var user = issue.user
-                       var uplay = user.player(game)
-                       add """<div class="media">
-                               <a class="media-left" href="{{{uplay.url}}}">
-                                        <img class=\"img-circle\" style="width:50px"
-                                                src="{{{user.avatar_url or else "#"}}}" alt="{{{uplay.name}}}">
-                                       </a>
-                                       <div class="media-body">
-                                        <h4 class="media-heading">
-                                               {{{issue.link}}} {{{issue.title}}}
-                                       </h4>
-                                        <span class="text-muted">opened by </span>
-                                        {{{uplay.link}}}
-                                       </div>
-                                  </div>"""
-               end
-       end
-end
-
-# A `Panel` that displays the work assigned or tagged.
-class PlayerWorkPanel
-       super Panel
-
-       # Repo to display.
-       var game: Game
-
-       # Player to display customized list for.
-       var player: Player
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-check\"></span>&nbsp;&nbsp;"
-               add "Do your tasks to gain nitcoins!"
-       end
-
-       redef fun render_body do
-               var q = "is:open label:need_work sort:updated-asc author:{player.name}"
-               var q2 = "is:open sort:updated-asc assignee:{player.name}"
-
-               var issues = new ArraySet[Issue]
-               issues.add_all game.api.search_repo_issues(game.repo, q)
-               issues.add_all game.api.search_repo_issues(game.repo, q2)
-               if issues.is_empty then
-                       add "<em>No work to do yet...</em>"
-                       return
-               end
-               for issue in issues do
-                       var user = issue.user
-                       var uplay = user.player(game)
-                       add """<div class="media">
-                               <a class="media-left" href="{{{uplay.url}}}">
-                                        <img class=\"img-circle\" style="width:50px"
-                                                src="{{{user.avatar_url or else "#"}}}" alt="{{{uplay.name}}}">
-                                       </a>
-                                       <div class="media-body">
-                                        <h4 class="media-heading">
-                                               {{{issue.link}}} {{{issue.title}}}
-                                       </h4>
-                                        <span class="text-muted">opened by </span>
-                                        {{{uplay.link}}}
-                                       </div>
-                                  </div>"""
-               end
-       end
-end
-
-# A `Panel` that displays a pagined list of events stored in the `entity`.
-#
-# This way the panel can be used to view events stored under `Game`, `Player`...
-class EventListPanel
-       super Panel
-
-       # Entity to load the events from.
-       var entity: GameEntity
-
-       # Number of events to display.
-       var limit: Int
-
-       # From where to start?
-       var from: Int
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-flash\"></span>&nbsp;&nbsp;"
-               add "Last events"
-       end
-
-       redef fun render_body do
-               var events = entity.load_events
-               if events.is_empty then
-                       add "<em>No event yet...</em>"
-                       return
-               end
-               # check input
-               if limit < 0 then limit = 10
-               if from < 0 then from = 0
-               # display events
-               for i in [from .. from + limit] do
-                       if i >= events.length then break
-                       add events[i].tpl_event.media_item
-               end
-               # pagination
-               if limit > events.length then return
-               add "<hr>"
-               add """<div class="btn-group" role="group">"""
-               if from > 0 then
-                       add """<a class="btn btn-default" role="button"
-                                       href="?pfrom={{{from - limit}}}&plimit={{{limit}}}">
-                                    <span class=\"glyphicon glyphicon-chevron-left\"></span></a>"""
-               end
-               if from + limit < events.length then
-                       add """
-                         <a class="btn btn-default" role="button"
-                                  href="?pfrom={{{from + limit}}}&plimit={{{limit}}}">
-                                   <span class=\"glyphicon glyphicon-chevron-right\"></span></a>"""
-               end
-               add "</div>"
-       end
-end
-
-# Achievement unlocked list panel.
-class AchievementsListPanel
-       super Panel
-
-       # Entity to load the events from.
-       var entity: GameEntity
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-list\"></span>&nbsp;&nbsp;"
-               add "Achievements unlocked"
-       end
-
-       redef fun render_body do
-               var achs = entity.load_achievements.values.to_a
-               if achs.is_empty then
-                       add "<em>No achievement yet...</em>"
-                       return
-               end
-               for ach in achs do add ach.list_item
-       end
-end
-
-# Achievement detail panel.
-class AchievementPanel
-       super Panel
-
-       # Achievement to display.
-       var achievement: Achievement
-
-       redef fun render_title do
-               add "<span class=\"glyphicon glyphicon-check\"></span>&nbsp;&nbsp;"
-               add "Achievement details"
-       end
-
-       redef fun render_body do
-               add """<p class=\"lead\">
-                               <span class="badge progress-bar-success"
-                                style="vertical-align: middle">+{{{achievement.reward}}}</span>
-                       {{{achievement.name}}}
-                      </p>
-                      <p><strong>{{{achievement.desc}}}</strong></p>"""
-
-               var events = achievement.load_events
-
-               if events.is_empty then
-                       add "<em>Never unlocked...</em>"
-                       return
-               end
-
-               var event = events.last
-               var tpl = event.tpl_event
-               var player = tpl.player
-               add "<hr>"
-               add """<div class="media">
-                       <a class="media-left" href="{{{player.url}}}">
-                                <span class="badge progress-bar-warning" style="position: absolute">#1</span>
-                        <img class=\"img-circle\" style="width:50px"
-                                        src="{{{player.user.avatar_url or else "#"}}}" alt="{{{player.name}}}">
-                       </a>
-                               <div class="media-body">
-                                <h4 class="media-heading">Unlocked first by {{{player.link}}}</h4>
-                                <span class="text-muted">at {{{event.time}}} </span>
-                               </div>
-                          </div>"""
-
-               if events.length > 1 then
-                       add """<p><br>Also unlocked by <strong class="text-success">
-                       {{{events.length}}} players</strong>.</p>"""
-               end
-       end
-end
diff --git a/contrib/nitrpg/src/templates/templates.nit b/contrib/nitrpg/src/templates/templates.nit
deleted file mode 100644 (file)
index 92a4915..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Templates that compose the `nitrpg` site.
-module templates
-
-import panels
-
-# A page in the nitrp site.
-class NitRpgPage
-       super Template
-
-       # URL used as prefix for all the links generated in this page.
-       var root_url: String
-
-       # Breadcrumbs to this page if any.
-       var breadcrumbs: nullable Breadcrumbs = null is public writable
-
-       # Panels to display in the sidebar.
-       var side_panels = new Array[Panel]
-
-       # Panels to display in the page main container.
-       var flow_panels = new Array[Panel]
-
-       redef fun rendering do
-               render_header
-               render_footer
-       end
-
-       # Render the header shared by all pages.
-       fun render_header do
-               add """
-<!DOCTYPE html>
-<html>
-       <head>
-               <meta charset="UTF-8">
-               <title>Github RPG</title>
-               <link rel="stylesheet"
-                       href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
-               <link rel="stylesheet" href="{{{root_url}}}/styles/main.css">
-       </head>
-       <body>
-               <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
-                       <a class="navbar-brand" href="{{{root_url}}}/">Github RPG</a>"""
-               if not breadcrumbs == null then
-                       add breadcrumbs.as(not null)
-               end
-               add """
-               </nav>
-               <div class="container-fluid">
-                       <div class="row">"""
-               if not side_panels.is_empty then
-                       add """<div class="col-xs-3" id="side">"""
-                       for panel in side_panels do add panel
-                       add """</div>
-                                  <div class="col-xs-9" id="flow">"""
-               else
-                       add """<div class="col-xs-12" id="flow">"""
-               end
-               for panel in flow_panels do add panel
-               add """    </div>
-                       </div>
-               </div>
-"""
-       end
-
-       # Render the footer shared by all pages.
-       fun render_footer do
-               add """
-               <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
-               <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
-       </body>
-</html>
-"""
-       end
-end
-
-# A Bootstrap breadcrumbs component.
-class Breadcrumbs
-       super Template
-
-       # Items to display in this breadcrumb.
-       var entries = new Array[String]
-
-       redef fun rendering do
-               add "<ol class=\"breadcrumb\">"
-               for entry in entries do
-                       add "<li>{entry}</li>"
-               end
-               add "</ol>"
-       end
-
-       # Add a link to the breadcrumbs.
-       fun add_link(href, name: String) do
-               entries.add "<a href=\"{href}\">{name}</a>"
-       end
-end
diff --git a/contrib/nitrpg/src/templates/templates_base.nit b/contrib/nitrpg/src/templates/templates_base.nit
deleted file mode 100644 (file)
index fe9efd8..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Base HTML rendering templates for `nitpg`.
-module templates_base
-
-import achievements
-
-redef class GameEntity
-
-       # Path to this entity from root.
-       fun path: String do return collection_name / key
-
-       # URL to this game entity page.
-       fun url: String do return game.url / path
-end
-
-redef class Game
-
-       # Root URL ise used as a prefix for `url`.
-       #
-       # This must be set before any access to `url`.
-       var root_url: String is noinit, writable
-
-       redef fun url do return "{root_url}/{path}"
-
-       # Return a HTML link to this Game.
-       fun link: String do return "<a href=\"{url}\">{name}</a>"
-end
-
-redef class Player
-       # Return a HTML link to this Player.
-       fun link: String do return "<a href=\"{url}\">{name}</a>"
-end
-
-redef class Issue
-       # Return a HTML link to this Issue.
-       fun link: String do return "<a href=\"{html_url or else "#"}\">#{number}</a>"
-end
-
-redef class Achievement
-       # Return a HTML link to this Issue.
-       fun link: String do return "<a href=\"{url}\">{name}</a>"
-
-       # Render self as a media item.
-       fun list_item: String do
-               return """<div class="media">
-                              <div class="media-left" style="width: 50px">
-                               <span class="glyphicon glyphicon-check"></span>
-                               <span class="badge progress-bar-success"
-                                style="position: absolute; margin-top: 10px;
-                                        margin-left: -5px;">+{{{reward}}}</span>
-                              </div>
-                              <div class="media-body">
-                               <h4 class="media-heading">{{{link}}}</h4>
-                               <span class="text-muted">{{{desc}}}</span>
-                              </div>
-                             </div>"""
-
-       end
-end
diff --git a/contrib/nitrpg/src/templates/templates_events.nit b/contrib/nitrpg/src/templates/templates_events.nit
deleted file mode 100644 (file)
index 3e141b9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Templates to display `GameEvent` kinds.
-module templates_events
-
-import achievements
-import templates_base
-
-redef class GameEvent
-       # See `TplEvent`
-       fun tpl_event: TplEvent do
-               if kind == "pull_open" then
-                       return new TplPullOpened(self)
-               else if kind == "pull_merged" then
-                       return new TplPullMerged(self)
-               else if kind == "pull_review" then
-                       return new TplPullReview(self)
-               else if kind == "achievement_unlocked" then
-                       return new TplAchievementUnlocked(self)
-               end
-               abort
-       end
-end
-
-# A TplEvent factorizes HTML rendering methods for `GameEvent`.
-class TplEvent
-
-       # Event to display.
-       var event: GameEvent
-
-       # Title to display.
-       var title: String is lazy do return "raw event"
-
-       # Load Player from event data.
-       var player: nullable Player is lazy do
-               return event.game.load_player(event.data["player"].to_s)
-       end
-
-       # Load reward from event data.
-       var reward: Int is lazy do return event.data["reward"].as(Int)
-
-       # Load `github_event` data key as a PullRequestEvent.
-       var pull_event: PullRequestEvent is lazy do
-               return event.game.api.deserialize(event.data["github_event"].as(JsonObject).to_json).as(PullRequestEvent)
-       end
-
-       # Load `github_event` data key as a IssueCommentEvent.
-       var issue_comment_event: IssueCommentEvent is lazy do
-               return event.game.api.deserialize(event.data["github_event"].as(JsonObject).to_json).as(IssueCommentEvent)
-       end
-
-       # Load `achievement` data key as an Achievement.
-       var achievement: Achievement is lazy do
-               return player.load_achievement(event.data["achievement"].to_s).as(not null)
-       end
-
-       # Display a media item for a reward event.
-       fun media_item: String do
-               return """<div class="media">
-                       <a class="media-left" href="{{{player.url}}}">
-                                <span class="badge progress-bar-success"
-                                 style=\"position: absolute\">+{{{reward}}}</span>
-                                <img class=\"img-circle\" style="width:50px"
-                                src="{{{player.user.avatar_url or else "#"}}}" alt="{{{player.name}}}">
-                               </a>
-                               <div class="media-body">
-                                <h4 class="media-heading">{{{title}}}</h4>
-                                <span class="text-muted">at {{{event.time}}}</span>
-                               </div>
-                          </div>"""
-       end
-end
-
-# Event: pull_open
-class TplPullOpened
-       super TplEvent
-
-       redef var title is lazy do
-               var pull = pull_event.pull
-               return "{player.link} pushed {pull.link}"
-       end
-end
-
-# Event: pull_merged
-class TplPullMerged
-       super TplEvent
-
-       redef var title is lazy do
-               var pull = pull_event.pull
-               return "{player.link} merged <strong>{pull.commits}</strong> commits with {pull.link}"
-       end
-end
-
-# Event: pull_review
-class TplPullReview
-       super TplEvent
-
-       redef var title is lazy do
-               var issue = issue_comment_event.issue
-               return "{player.link} reviewed {issue.link}"
-       end
-end
-
-# Event: achievement_unlocked
-class TplAchievementUnlocked
-       super TplEvent
-
-       redef var title is lazy do
-               return "{player.link} unlocked {achievement.link}"
-       end
-end
diff --git a/contrib/nitrpg/src/test_achievements.nit b/contrib/nitrpg/src/test_achievements.nit
deleted file mode 100644 (file)
index 41d9dd1..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test module for `achievements.nit`
-module test_achievements is test
-
-import test_helper
-import achievements
-
-class TestGame
-       super NitrpgTestHelper
-       test
-
-       fun test_add_achievement is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               game.add_achievement(a1)
-               game.add_achievement(a2)
-               assert game.load_achievements.length == 2
-       end
-
-       fun test_load_achievement is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               game.add_achievement(a1)
-               assert game.load_achievement(a1.id).id == "test_id1"
-               assert game.load_achievement(a2.id) == null
-       end
-
-       fun test_load_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
-               game.add_achievement(a1)
-               game.add_achievement(a2)
-               game.db.collection("achievements").insert(a3.to_json_object)
-               var ok = [a1.id, a2.id]
-               var res = game.load_achievements
-               assert res.length == 2
-               for a in res.values do assert ok.has(a.id)
-       end
-end
-
-class TestPlayer
-       super NitrpgTestHelper
-       test
-
-       fun test_add_achievement is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               player1.add_achievement(a1)
-               player1.add_achievement(a2)
-               assert player1.load_achievements.length == 2
-       end
-
-       fun test_load_achievement is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(game, "xymus")
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               player1.add_achievement(a1)
-               player2.add_achievement(a2)
-               assert player1.load_achievement(a1.id).id == "test_id1"
-               assert player1.load_achievement(a2.id) == null
-               assert player2.load_achievement(a2.id).id == "test_id2"
-               assert player2.load_achievement(a1.id) == null
-       end
-
-       fun test_load_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(game, "xymus")
-               var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
-               var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
-               var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
-               player1.add_achievement(a1)
-               player1.add_achievement(a2)
-               player2.add_achievement(a3)
-               var ok = [a1.id, a2.id]
-               var res = player1.load_achievements
-               assert res.length == 2
-               for a in res.values do assert ok.has(a.id)
-       end
-end
-
-class TestAchievement
-       super NitrpgTestHelper
-       test
-
-       fun test_init is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var a = new Achievement(game, "test_id", "test_name", "test_desc", 15)
-               assert a.id == "test_id"
-               assert a.name == "test_name"
-               assert a.desc == "test_desc"
-               assert a.reward == 15
-       end
-
-       fun test_init_from_json is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var json = """{
-                       "id": "test_id",
-                       "name": "test_name",
-                       "desc": "test_desc",
-                       "reward": 15
-               }""".parse_json.as(JsonObject)
-               var a = new Achievement.from_json(game, json)
-               assert a.id == "test_id"
-               assert a.name == "test_name"
-               assert a.desc == "test_desc"
-               assert a.reward == 15
-       end
-end
diff --git a/contrib/nitrpg/src/test_events.nit b/contrib/nitrpg/src/test_events.nit
deleted file mode 100644 (file)
index efe24cf..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test module for `events.nit`
-module test_events is test
-
-import test_helper
-import events
-
-class TestGame
-       super NitrpgTestHelper
-       test
-
-       fun test_add_event is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               game.add_event(event1)
-               game.add_event(event2)
-               assert game.load_events.length == 2
-       end
-
-       fun test_load_event is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               game.add_event(event1)
-               assert game.load_event(event1.internal_id).kind == "test_kind"
-               assert game.load_event(event2.internal_id) == null
-       end
-
-       fun test_load_events is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               var event3 = new GameEvent(game, "test_kind", new JsonObject)
-               game.add_event(event1)
-               game.add_event(event2)
-               game.db.collection("events").insert(event3.to_json_object)
-               var ok = [event1.internal_id, event2.internal_id]
-               var res = game.load_events
-               assert res.length == 2
-               for event in res do assert ok.has(event.internal_id)
-       end
-end
-
-class TestPlayer
-       super NitrpgTestHelper
-       test
-
-       fun test_add_event is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(game, "xymus")
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               player1.add_event(event1)
-               player1.add_event(event2)
-               assert player1.load_events.length == 2
-               assert player2.load_events.length == 0
-       end
-
-       fun test_load_event is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(game, "xymus")
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               player1.add_event(event1)
-               player2.add_event(event2)
-               assert player1.load_event(event1.internal_id).kind == "test_kind"
-               assert player1.load_event(event2.internal_id) == null
-               assert player2.load_event(event2.internal_id).kind == "test_kind"
-               assert player2.load_event(event1.internal_id) == null
-       end
-
-       fun test_load_events is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(game, "xymus")
-               var event1 = new GameEvent(game, "test_kind", new JsonObject)
-               var event2 = new GameEvent(game, "test_kind", new JsonObject)
-               var event3 = new GameEvent(game, "test_kind", new JsonObject)
-               player1.add_event(event1)
-               player1.add_event(event2)
-               player2.add_event(event3)
-               assert player1.load_events.length == 2
-               assert player2.load_events.length == 1
-               var ok = [event1.internal_id, event2.internal_id]
-               for event in player1.load_events do assert ok.has(event.internal_id)
-       end
-end
-
-class TestGameEvent
-       super NitrpgTestHelper
-       test
-
-       fun test_init is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var event = new GameEvent(game, "test_kind", new JsonObject)
-               assert event.to_json_object["kind"] == "test_kind"
-       end
-
-       fun test_init_from_json is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var json = """{
-                       "internal_id": "test_id",
-                       "kind": "test_kind",
-                       "time": "2015-02-05T00:00:00Z",
-                       "data": {"test_field": "test_value"}
-               }""".parse_json.as(JsonObject)
-               var event = new GameEvent.from_json(game, json)
-               assert event.internal_id == "test_id"
-               assert event.kind == "test_kind"
-               assert event.data.to_json == """{"test_field":"test_value"}"""
-               assert event.time.to_s == "2015-02-05T00:00:00Z"
-       end
-end
diff --git a/contrib/nitrpg/src/test_game.nit b/contrib/nitrpg/src/test_game.nit
deleted file mode 100644 (file)
index c2aa677..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test module for `game.nit`.
-module test_game is test
-
-import test_helper
-
-class TestGame
-       super NitrpgTestHelper
-       test
-
-       fun test_add_player is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var users = ["Morriar", "xymus"]
-               for name in users do
-                       game.add_player(game.api.load_user(name).as(not null))
-               end
-               var res = game.load_players.values
-               assert res.length == 2
-               for player in res do
-                       assert users.has(player.name)
-               end
-       end
-
-       fun test_load_player is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var ogame = load_game("Morriar/nit", db)
-
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(ogame, "privat")
-               game.db.collection("players").insert(player1.to_json_object)
-               ogame.db.collection("players").insert(player2.to_json_object)
-
-               assert game.load_player("privat") == null
-               assert game.load_player("Morriar").name == "Morriar"
-               assert ogame.load_player("privat").name == "privat"
-               assert ogame.load_player("Morriar") == null
-       end
-
-       fun test_load_players is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var ogame = load_game("Morriar/nit", db)
-
-               var player1 = new Player(game, "Morriar")
-               var player2 = new Player(ogame, "privat")
-               var player3 = new Player(game, "xymus")
-               game.db.collection("players").insert(player1.to_json_object)
-               ogame.db.collection("players").insert(player2.to_json_object)
-               game.db.collection("players").insert(player3.to_json_object)
-
-               var players = game.load_players
-               var ok = ["Morriar", "xymus"]
-               for player in players.values do assert ok.has(player.name)
-       end
-end
-
-class TestPlayer
-       super NitrpgTestHelper
-       test
-
-       fun test_init is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var player = new Player(game, "Morriar")
-               assert player.name == "Morriar"
-               assert player.user.login == "Morriar"
-               assert player.nitcoins == 0
-       end
-
-       fun test_init_from_json is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json
-               var player = new Player.from_json(game, json.as(JsonObject))
-               assert player.name == "Morriar"
-               assert player.user.login == "Morriar"
-               assert player.nitcoins == 10
-       end
-
-       fun test_save is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json.as(JsonObject)
-               var player = new Player.from_json(game, json)
-               player.save
-               assert game.db.collection("players").find(json) != null
-       end
-
-       fun test_game_add_player is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               game.add_player(game.api.load_user("Morriar").as(not null))
-               var json = """{"name": "Morriar"}""".parse_json.as(JsonObject)
-               assert game.db.collection("players").find(json) != null
-       end
-
-       fun test_game_load_player is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var json = """{"name": "Morriar", "nitcoins": 10}""".parse_json.as(JsonObject)
-               var player = new Player.from_json(game, json)
-               player.save
-               var oplayer = game.load_player("Morriar")
-               assert oplayer != null
-               assert player.nitcoins == oplayer.nitcoins
-       end
-end
-
-class TestUser
-       super NitrpgTestHelper
-       test
-
-       fun test_player is test do
-               var db = gen_test_db
-               var api = new GithubAPI(get_github_oauth)
-               var game = load_game("privat/nit", db)
-               var user = api.load_user("Morriar")
-               assert user != null
-               var player = user.player(game)
-               assert player.name == "Morriar"
-               game.clear
-       end
-end
diff --git a/contrib/nitrpg/src/test_helper.nit b/contrib/nitrpg/src/test_helper.nit
deleted file mode 100644 (file)
index 9d71ca3..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test tools for NitRPG.
-module test_helper
-
-import game
-import github::cache
-
-# Used to factorize test treatments.
-abstract class NitrpgTestHelper
-
-       # Github API client
-       var api: GithubAPI do
-               var api = new GithubAPI(get_github_oauth)
-               api.enable_cache = true
-               return api
-       end
-
-       # Mongo API client
-       var mongo = new MongoClient("mongodb://mongo:27017/")
-
-       # Load a new test database by with a name
-       private fun load_db(name: String): MongoDb do return mongo.database(name)
-
-       # Load a repo by its name.
-       fun load_repo(name: String): Repo do
-               var repo = api.load_repo(name)
-               assert repo != null
-               return repo
-       end
-
-       # Load a game by its name.
-       fun load_game(name: String, db: MongoDb): Game do
-               var game = new Game(api, load_repo(name))
-               game.db_name = db.name
-               return game
-       end
-
-       # Stack of db used for testing.
-       var test_dbs = new Array[MongoDb]
-
-       # Gen a test db with a random name (to avoid race conditions).
-       fun gen_test_db: MongoDb do
-               var testid = "NIT_TESTING_ID".environ.to_i
-               var db_name = "test_nitrpg_{testid}"
-               var db = load_db(db_name)
-               test_dbs.add db
-               return db
-       end
-
-       # Should be called after your test.
-       fun drop_test_db do
-               var db = test_dbs.pop
-               db.drop
-       end
-
-       # Drop the databse after each test
-       fun after_test is after do drop_test_db
-end
diff --git a/contrib/nitrpg/src/test_listener.nit b/contrib/nitrpg/src/test_listener.nit
deleted file mode 100644 (file)
index d70f3aa..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test module for `listener.nit`
-module test_listener is test
-
-import test_helper
-import reactors
-import achievements
-import events_generator
-
-private class DummyListener
-       super NitrpgTestHelper
-       test
-
-       var reactors = new Array[GameReactor]
-
-       fun apply_event(event: GithubEvent, db: MongoDb) do
-               var game = load_game(event.repo.full_name, db)
-               for reactor in reactors do
-                       reactor.react_event(game, event)
-               end
-       end
-
-       fun add_reactor(reactors: GameReactor...) do self.reactors.add_all reactors
-end
-
-class TestListener
-       super NitrpgTestHelper
-       test
-
-       var generator = new EventsGenerator(api)
-
-       var repo: Repo is lazy do return load_repo("Morriar/nit")
-
-       fun test_game_issue_stats is test do
-               var db = gen_test_db
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-
-               var issue = api.load_issue(repo, 322)
-               assert issue != null
-
-               l.apply_event(generator.issue_open(repo, issue), db)
-               var game = load_game("Morriar/nit", db)
-               assert game.stats.overall["issues"] == 1
-               assert game.stats.overall["issues_open"] == 1
-               l.apply_event(generator.issue_close(repo, issue), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["issues"] == 1
-               assert game.stats.overall["issues_open"] == 0
-               l.apply_event(generator.issue_reopen(repo, issue), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["issues"] == 1
-               assert game.stats.overall["issues_open"] == 1
-       end
-
-       fun test_player_issue_stats is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-
-               var issue = api.load_issue(repo, 322)
-               assert issue != null
-
-               l.apply_event(generator.issue_open(repo, issue), db)
-               var player = new Player(game, "Morriar")
-               assert player.stats.overall["issues"] == 1
-               assert player.stats.overall["issues_open"] == 1
-               l.apply_event(generator.issue_close(repo, issue), db)
-               player = new Player(game, "Morriar")
-               assert player.stats.overall["issues"] == 1
-               assert player.stats.overall["issues_open"] == 0
-               l.apply_event(generator.issue_reopen(repo, issue), db)
-               player = new Player(game, "Morriar")
-               assert player.stats.overall["issues"] == 1
-               assert player.stats.overall["issues_open"] == 1
-       end
-
-       fun test_game_pr_stats is test do
-               var db = gen_test_db
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-
-               var pr = api.load_pull(repo, 275)
-               assert pr != null
-
-               l.apply_event(generator.pull_open(repo, pr), db)
-               var game = load_game("Morriar/nit", db)
-               assert game.stats.overall["pulls"] == 1
-               assert game.stats.overall["pulls_open"] == 1
-               assert game.stats.overall["commits"] == 0
-               pr.merged = false
-               l.apply_event(generator.pull_close(repo, pr), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["pulls"] == 1
-               assert game.stats.overall["pulls_open"] == 0
-               assert game.stats.overall["commits"] == 0
-               l.apply_event(generator.pull_reopen(repo, pr), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["pulls"] == 1
-               assert game.stats.overall["pulls_open"] == 1
-               assert game.stats.overall["commits"] == 0
-               pr.merged = true
-               l.apply_event(generator.pull_close(repo, pr), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["pulls"] == 1
-               assert game.stats.overall["pulls_open"] == 0
-               assert game.stats.overall["commits"] == 2
-       end
-
-       fun test_game_issue_comment_stats is test do
-               var db = gen_test_db
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-
-               var issue = api.load_issue(repo, 322)
-               assert issue != null
-               var comment = api.load_issue_comment(repo, 76119442)
-               assert comment != null
-
-               comment.body = "foo bar"
-               l.apply_event(generator.issue_comment_event(repo, issue, comment), db)
-               var game = load_game("Morriar/nit", db)
-               assert game.stats.overall["comments"] == 1
-               assert game.stats.overall["reviews"] == 0
-               comment.body = "foo +1 bar"
-               l.apply_event(generator.issue_comment_event(repo, issue, comment), db)
-               game = load_game("Morriar/nit", db)
-               assert game.stats.overall["comments"] == 2
-               assert game.stats.overall["reviews"] == 1
-       end
-
-       fun test_player_pull_reactor is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new PlayerReactor)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-
-               l.apply_event(generator.pull_open(repo, pull), db)
-               var player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 10
-               pull.merged = false
-               l.apply_event(generator.pull_close(repo, pull), db)
-               player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 0
-               l.apply_event(generator.pull_reopen(repo, pull), db)
-               player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 10
-               pull.merged = true
-               l.apply_event(generator.pull_close(repo, pull), db)
-               player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 12
-       end
-
-       fun test_player_review_reactor is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new PlayerReactor)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-               var comment = api.load_issue_comment(repo, 36961230)
-               assert comment != null
-
-               # TODO handle multiple review by the same user
-
-               # no review in opened issue
-               pull.state = "open"
-               comment.body = "foo bar"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               var player = new Player(game, "Morriar")
-               assert player.stats.overall["nitcoins"] == 0
-
-               # review in opened issue
-               pull.state = "open"
-               comment.body = "foo +1 bar"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               player = new Player(game, "Morriar")
-               print player.stats.overall["nitcoins"]
-               assert player.stats.overall["nitcoins"] == 2
-
-               # review in closed issue
-               pull.state = "closed"
-               comment.body = "foo +1 bar"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               player = new Player(game, "Morriar")
-               assert player.stats.overall["nitcoins"] == 2
-
-               # review in reopened issue
-               pull.state = "open"
-               comment.body = "foo +1 bar"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               player = new Player(game, "Morriar")
-               assert player.stats.overall["nitcoins"] == 4
-       end
-
-       fun test_X_issues_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-               l.add_reactor(new Player1Issue, new Player100Issues, new Player1KIssues)
-
-               var issue = api.load_issue(repo, 322)
-               assert issue != null
-
-               for i in [0, 99, 999] do
-                       var id = "player_{i + 1}_issue"
-                       if i > 0 then id = "{id}s"
-                       var player = new Player(game, "Morriar")
-                       player.stats["issues"] = i
-                       player.save
-                       l.apply_event(generator.issue_open(repo, issue), db)
-                       assert player.load_achievements.has_key(id)
-               end
-               var player = new Player(game, "Morriar")
-               assert player.stats.overall["nitcoins"] == 1110
-       end
-
-       fun test_X_pulls_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-               l.add_reactor(new Player1Pull, new Player100Pulls, new Player1KPulls)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-
-               for i in [0, 99, 999] do
-                       var id = "player_{i + 1}_pull"
-                       if i > 0 then id = "{id}s"
-                       var player = new Player(game, "itch76")
-                       player.stats["pulls"] = i
-                       player.save
-                       l.apply_event(generator.pull_open(repo, pull), db)
-                       assert player.load_achievements.has_key(id)
-               end
-               var player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 1110
-       end
-
-       fun test_X_commits_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-               l.add_reactor(new Player1Commit, new Player100Commits)
-               l.add_reactor(new Player1KCommits, new Player10KCommits)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-               pull.state = "closed"
-               pull.merged = true
-
-               for i in [0, 99, 999, 9999] do
-                       var id = "player_{i + 1}_commit"
-                       if i > 0 then id = "{id}s"
-                       var player = new Player(game, "itch76")
-                       player.stats["commits"] = i
-                       player.save
-                       l.apply_event(generator.pull_close(repo, pull), db)
-                       assert player.load_achievements.has_key(id)
-               end
-               var player = new Player(game, "itch76")
-               assert player.stats.overall["nitcoins"] == 11110
-       end
-
-       fun test_X_comments_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new StatisticsReactor)
-               l.add_reactor(new Player1Comment, new Player100Comments, new Player1KComments)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-               var comment = api.load_issue_comment(repo, 36961230)
-               assert comment != null
-
-               for i in [0, 99, 999] do
-                       var id = "player_{i + 1}_comment"
-                       if i > 0 then id = "{id}s"
-                       var player = new Player(game, "Morriar")
-                       player.stats["comments"] = i
-                       player.save
-                       l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-                       assert player.load_achievements.has_key(id)
-               end
-               var player = new Player(game, "Morriar")
-               assert player.stats.overall["nitcoins"] == 1110
-       end
-
-    fun test_issues_achievements is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new IssueAboutNitdoc, new IssueAboutFFI)
-
-               var issue = api.load_issue(repo, 322)
-               assert issue != null
-
-               issue.title = "nitdoc ffi"
-               l.apply_event(generator.issue_open(repo, issue), db)
-               var player = new Player(game, "Morriar")
-               assert player.load_achievements.has_key("issue_about_nitdoc")
-               assert player.load_achievements.has_key("issue_about_ffi")
-               assert player.stats.overall["nitcoins"] == 20
-       end
-
-       fun test_comments_reactor is test do
-               var db = gen_test_db
-               var game = load_game("Morriar/nit", db)
-               var l = new DummyListener
-               l.add_reactor(new PlayerPingGod, new PlayerFirstReview, new PlayerSaysNitcoin)
-
-               var pull = api.load_pull(repo, 275)
-               assert pull != null
-               var comment = api.load_issue_comment(repo, 36961230)
-               assert comment != null
-
-               comment.body = "@{game.repo.owner.login}"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               var player = new Player(game, "Morriar")
-               assert player.load_achievements.has_key("player_ping_god")
-               assert player.stats.overall["nitcoins"] == 50
-
-               comment.body = "+1"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               player = new Player(game, "Morriar")
-               assert player.load_achievements.has_key("player_first_review")
-               assert player.stats.overall["nitcoins"] == 60
-
-               comment.body = "Nitcoins"
-               l.apply_event(generator.issue_comment_event(repo, pull, comment), db)
-               player = new Player(game, "Morriar")
-               assert player.load_achievements.has_key("player_says_nitcoin")
-               assert player.stats.overall["nitcoins"] == 70
-       end
-end
diff --git a/contrib/nitrpg/src/test_statistics.nit b/contrib/nitrpg/src/test_statistics.nit
deleted file mode 100644 (file)
index 9bdf8fa..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test module for `stats.nit`
-module test_statistics is test
-
-import test_helper
-import statistics
-
-class TestGame
-       super NitrpgTestHelper
-       test
-
-       fun test_game_stats is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var stats = game.stats
-               assert stats.overall["test"] == 0
-               stats.overall.inc("test")
-               assert stats.overall["test"] == 1
-               stats.save
-               var ogame = load_game("privat/nit", db)
-               var ostats = ogame.stats
-               ostats.overall.inc("test")
-               assert ostats.overall["test"] == 2
-       end
-end
-
-class TestPlayer
-       super NitrpgTestHelper
-       test
-
-       fun test_player_stats is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var player = new Player(game, "Morriar")
-               var stats = player.stats
-               assert stats.overall["test"] == 0
-               stats.overall.inc("test")
-               assert stats.overall["test"] == 1
-               stats.save
-               var oplayer = new Player(game, "Morriar")
-               var ostats = oplayer.stats
-               ostats.overall.inc("test")
-               assert ostats.overall["test"] == 2
-       end
-end
-
-class TestGameStats
-       super NitrpgTestHelper
-       test
-
-       fun test_init_from_json is test do
-               var db = gen_test_db
-               var game = load_game("privat/nit", db)
-               var owner = new Player(game, "Morriar")
-               var json = """{
-                       "period": "2015",
-                       "owner": "Morriar",
-                       "values": {
-                               "test1": 10,
-                               "test2": 20
-                       }
-               }""".parse_json.as(JsonObject)
-               var stats = new GameStats.from_json(game, "2015", owner, json)
-               assert stats["test0"] == 0
-               assert stats["test1"] == 10
-               assert stats["test2"] == 20
-       end
-end
diff --git a/contrib/nitrpg/src/web.nit b/contrib/nitrpg/src/web.nit
deleted file mode 100644 (file)
index 3d54672..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Display `nitrpg` data as a website.
-module web
-
-import nitcorn
-import templates
-
-# A custom action forn `nitrpg`.
-class RpgAction
-       super Action
-
-       # Root URL is used as a prefix for all URL generated by the actions.
-       var root_url: String
-
-       # Github oauth token used for GithubAPI.
-       var auth: String is lazy do return get_github_oauth
-
-       # API client used to import data from Github.
-       var api: GithubAPI is lazy do
-               var api = new GithubAPI(auth)
-               return api
-       end
-
-       init do
-               super
-               if auth.is_empty then
-                       print "Error: Invalid Github oauth token!"
-                       exit 1
-               end
-       end
-
-       # Return an Error reponse page.
-       fun bad_request(msg: String): HttpResponse do
-               var rsp = new HttpResponse(400)
-               var page = new NitRpgPage(root_url)
-               var error = new ErrorPanel(msg)
-               page.flow_panels.add error
-               rsp.body = page
-               return rsp
-       end
-
-       # Returns the game with `name` or null if no game exists with this name.
-       fun load_game(name: String): nullable Game do
-               var repo = api.load_repo(name)
-               if repo == null then return null
-               var game = new Game.from_mongo(api, repo)
-               game.root_url = root_url
-               return game
-       end
-
-       # Returns the list of saved games from NitRPG data.
-       fun load_games: Array[Game] do
-               var res = new Array[Game]
-               # TODO should be option
-               var mongo = new MongoClient("mongodb://mongo:27017")
-               var db = mongo.database("nitrpg")
-               for obj in db.collection("games").find_all(new JsonObject) do
-                       var repo = api.load_repo(obj["name"].to_s)
-                       assert repo != null
-                       var game = new Game(api, repo)
-                       game.from_json(obj)
-                       game.root_url = root_url
-                       res.add game
-               end
-               return res
-       end
-end
-
-# Repo overview page.
-class RpgHome
-       super RpgAction
-
-       # Response page stub.
-       var page: NitRpgPage is noinit
-
-       redef fun answer(request, url) do
-               var readme = load_readme
-               var games = load_games
-               var response = new HttpResponse(200)
-               page = new NitRpgPage(root_url)
-               page.side_panels.add new GamesShortListPanel(root_url, games)
-               page.flow_panels.add new MDPanel(readme)
-               response.body = page
-               return response
-       end
-
-       # Load the string content of the nitrpg readme file.
-       private fun load_readme: String do
-               var readme = "README.md"
-               if not readme.file_exists then
-                       return "Unable to locate README file."
-               end
-               var file = new FileReader.open(readme)
-               var text = file.read_all
-               file.close
-               return text
-       end
-end
-
-# Display the list of active game.
-class ListGames
-       super RpgAction
-
-       # Response page stub.
-       var page: NitRpgPage is noinit
-
-       redef fun answer(request, url) do
-               var games = load_games
-               var response = new HttpResponse(200)
-               page = new NitRpgPage(root_url)
-               page.breadcrumbs = new Breadcrumbs
-               page.breadcrumbs.add_link(root_url / "games", "games")
-               page.flow_panels.add new GamesListPanel(root_url, games)
-               response.body = page
-               return response
-       end
-end
-
-# An action that require a game.
-class GameAction
-       super RpgAction
-
-       # Response page stub.
-       var page: NitRpgPage is noinit
-
-       # Target game.
-       var game: Game is noinit
-
-       redef fun answer(request, url) is abstract
-
-       # Check errors and prepare response.
-       private fun prepare_response(request: HttpRequest, url: String): HttpResponse do
-               var owner = request.param("owner")
-               var repo_name = request.param("repo")
-               if owner == null or repo_name == null then
-                       var msg = "Bad request: should look like /games/:owner/:repo."
-                       return bad_request(msg)
-               end
-               var game = load_game("{owner}/{repo_name}")
-               if game == null then
-                       var msg = api.last_error.message
-                       return bad_request("Repo Error: {msg}")
-               end
-               self.game = game
-               var response = new HttpResponse(200)
-               page = new NitRpgPage(root_url)
-               page.side_panels.add new GameStatusPanel(game)
-               page.breadcrumbs = new Breadcrumbs
-               page.breadcrumbs.add_link(game.url, game.name)
-               prepare_pagination(request)
-               return response
-       end
-
-       # Parse pagination related parameters.
-       private fun prepare_pagination(request: HttpRequest) do
-               var args = request.get_args
-               list_from = args.get_or_default("pfrom", "0").to_i
-               list_limit = args.get_or_default("plimit", "10").to_i
-       end
-
-       # Limit of events to display in lists.
-       var list_limit = 10
-
-       # From where to start the display of events related lists.
-       var list_from = 0
-
-       # TODO should also check 201, 203 ...
-       private fun is_response_error(response: HttpResponse): Bool do
-               return response.status_code != 200
-       end
-end
-
-# Repo overview page.
-class RepoHome
-       super GameAction
-
-       redef fun answer(request, url) do
-               var rsp = prepare_response(request, url)
-               if is_response_error(rsp) then return rsp
-               page.side_panels.add new ShortListPlayersPanel(game)
-               page.flow_panels.add new PodiumPanel(game)
-               page.flow_panels.add new EventListPanel(game, list_limit, list_from)
-               page.flow_panels.add new AchievementsListPanel(game)
-               rsp.body = page
-               return rsp
-       end
-end
-
-# Repo players list.
-class ListPlayers
-       super GameAction
-
-       redef fun answer(request, url) do
-               var rsp = prepare_response(request, url)
-               if is_response_error(rsp) then return rsp
-               page.breadcrumbs.add_link(game.url / "players", "players")
-               page.flow_panels.add new ListPlayersPanel(game)
-               rsp.body = page
-               return rsp
-       end
-end
-
-# Player details page.
-class PlayerHome
-       super GameAction
-
-       redef fun answer(request, url) do
-               var rsp = prepare_response(request, url)
-               if is_response_error(rsp) then return rsp
-               var name = request.param("player")
-               if name == null then
-                       var msg = "Bad request: should look like /:owner/:repo/:players/:name."
-                       return bad_request(msg)
-               end
-               var player = game.load_player(name)
-               if player == null then
-                       return bad_request("Request Error: unknown player {name}.")
-               end
-               page.breadcrumbs.add_link(game.url / "players", "players")
-               page.breadcrumbs.add_link(player.url, name)
-               page.side_panels.clear
-               page.side_panels.add new PlayerStatusPanel(game, player)
-               page.flow_panels.add new PlayerReviewsPanel(game, player)
-               page.flow_panels.add new PlayerWorkPanel(game, player)
-               page.flow_panels.add new AchievementsListPanel(player)
-               page.flow_panels.add new EventListPanel(player, list_limit, list_from)
-               rsp.body = page
-               return rsp
-       end
-end
-
-# Display the list of achievements unlocked for this game.
-class ListAchievements
-       super GameAction
-
-       redef fun answer(request, url) do
-               var rsp = prepare_response(request, url)
-               if is_response_error(rsp) then return rsp
-               page.breadcrumbs.add_link(game.url / "achievements", "achievements")
-               page.flow_panels.add new AchievementsListPanel(game)
-               rsp.body = page
-               return rsp
-       end
-end
-
-# Player details page.
-class AchievementHome
-       super GameAction
-
-       redef fun answer(request, url) do
-               var rsp = prepare_response(request, url)
-               if is_response_error(rsp) then return rsp
-               var name = request.param("achievement")
-               if name == null then
-                       var msg = "Bad request: should look like /:owner/:repo/achievements/:achievement."
-                       return bad_request(msg)
-               end
-               var achievement = game.load_achievement(name)
-               if achievement == null then
-                       return bad_request("Request Error: unknown achievement {name}.")
-               end
-               page.breadcrumbs.add_link(game.url / "achievements", "achievements")
-               page.breadcrumbs.add_link(achievement.url, achievement.name)
-               page.flow_panels.add new AchievementPanel(achievement)
-               page.flow_panels.add new EventListPanel(achievement, list_limit, list_from)
-               rsp.body = page
-               return rsp
-       end
-end
-
-if args.length != 3 then
-       print "Error: missing argument"
-       print ""
-       print "Usage:"
-       print "web <host> <port> <root_url>"
-       exit 1
-end
-
-var host = args[0]
-var port = args[1]
-var root = args[2]
-
-var iface = "{host}:{port}"
-var vh = new VirtualHost(iface)
-vh.routes.add new Route("/styles/", new FileServer("www/styles"))
-vh.routes.add new Route("/games/:owner/:repo/players/:player", new PlayerHome(root))
-vh.routes.add new Route("/games/:owner/:repo/players", new ListPlayers(root))
-vh.routes.add new Route("/games/:owner/:repo/achievements/:achievement", new AchievementHome(root))
-vh.routes.add new Route("/games/:owner/:repo/achievements", new ListAchievements(root))
-vh.routes.add new Route("/games/:owner/:repo", new RepoHome(root))
-vh.routes.add new Route("/games", new ListGames(root))
-vh.routes.add new Route("/", new RpgHome(root))
-
-var fac = new HttpFactory.and_libevent
-fac.config.virtual_hosts.add vh
-
-print "Launching server on http://{iface}/"
-fac.run
diff --git a/contrib/nitrpg/www/styles/main.css b/contrib/nitrpg/www/styles/main.css
deleted file mode 100644 (file)
index 865123e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-body { padding-top: 70px; }
-
-.navbar .breadcrumb {
-       background-color: transparent;
-       margin-bottom: 0;
-       margin-top: 0.5em;
-}
-
-/* columns of same height styles */
-.container-xs-height {
-    display:table;
-    padding-left:0px;
-    padding-right:0px;
-}
-.row-xs-height {
-    display:table-row;
-}
-.col-xs-height {
-    display:table-cell;
-    float:none;
-}
-@media (min-width: 768px) {
-    .container-sm-height {
-        display:table;
-        padding-left:0px;
-        padding-right:0px;
-    }
-    .row-sm-height {
-        display:table-row;
-    }
-    .col-sm-height {
-        display:table-cell;
-        float:none;
-    }
-}
-@media (min-width: 992px) {
-    .container-md-height {
-        display:table;
-        padding-left:0px;
-        padding-right:0px;
-    }
-    .row-md-height {
-        display:table-row;
-    }
-    .col-md-height {
-        display:table-cell;
-        float:none;
-    }
-}
-@media (min-width: 1200px) {
-    .container-lg-height {
-        display:table;
-        padding-left:0px;
-        padding-right:0px;
-    }
-    .row-lg-height {
-        display:table-row;
-    }
-    .col-lg-height {
-        display:table-cell;
-        float:none;
-    }
-}
-
-/* vertical alignment styles */
-.col-top {
-    vertical-align:top;
-}
-.col-middle {
-    vertical-align:middle;
-}
-.col-bottom {
-    vertical-align:bottom;
-}
diff --git a/contrib/refund/.gitignore b/contrib/refund/.gitignore
deleted file mode 100644 (file)
index f8f6caf..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-bin/
-tests/out/
-stats.json
diff --git a/contrib/refund/package.ini b/contrib/refund/package.ini
deleted file mode 100644 (file)
index 1db87a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=refund
-tags=example,cli
-maintainer=Alexandre Terrasa <alexandre@moz-code.org>
-license=Apache-2.0
-desc=Insurance refunds calculation tool
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/refund/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/refund/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/contrib/refund/src/refund.nit b/contrib/refund/src/refund.nit
deleted file mode 100644 (file)
index 02e0af1..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Insurance refunds calculation tool.
-#
-# `refund` computes automatically the allowed refund for a reclamation according
-# to an insurrance policy.
-#
-# Usage:
-#
-# ~~~sh
-# > refund (<input_file> <output_file> | [OPTIONS])
-# ~~~
-#
-# Input file:
-#
-# `refund` expects a JSON input file on the form:
-#
-# ~~~json
-# {
-#  "dossier": "A100323",
-#  "mois": "2015-01",
-#  "reclamations": [
-#   {
-#    "soin": 100,
-#    "date": "2015-01-11",
-#    "montant": "234.00$"
-#   }, {
-#    "soin": 200,
-#    "date": "2015-01-13",
-#    "montant": "128.00$"
-#   }, {
-#    "soin": 334,
-#    "date": "2015-01-23",
-#    "montant": "50.00$"
-#   }
-#  ]
-# }
-# ~~~
-#
-# Output file:
-#
-# You have to specify the path where `refund` should output the result file.
-#
-# Results are formatted as JSON:
-#
-# ~~~json
-# {
-#  "client": "100323",
-#  "mois": "2015-01",
-#  "remboursements": [
-#   {
-#    "soin": 100,
-#    "date": "2015-01-11",
-#    "montant": "58.50$"
-#   }, {
-#    "soin": 200,
-#    "date": "2015-01-13",
-#    "montant": "22.50$"
-#   }, {
-#    "soin": 334,
-#    "date": "2015-01-23",
-#    "montant": "0.00$"
-#   }
-#  ]
-# }
-# ~~~
-#
-# Options:
-#
-# `refund` can generate statistics about reclamations and refunds computed.
-#
-# * `-S`: display statistics
-# * `-SR`: reset statistics
-#
-# Error handling:
-#
-# In case of error, a JSON object is generated in place of the output file:
-#
-# ~~~json
-# { "message": "Invalid input data" }
-# ~~~
-module refund
-
-
-import refund_json
-
-# Display usage in console then leave.
-fun usage do
-       print ""
-       print "Usage:"
-       print "refund <input.json> <output.json>"
-       print ""
-       print "options"
-       print " -S\tShow stats in console"
-       print " -RS\tClear stats"
-       exit 1
-end
-
-var proc = new RefundProcessor
-
-if args.length == 1 then
-       var flag = args.first
-       if flag == "-RS" then
-               proc.clear_stats
-               exit 0
-       else if flag == "-S" then
-               proc.show_stats
-               exit 0
-       else
-               print "Error: Unknown flag {flag}."
-               usage
-       end
-else if args.length != 2 then
-       print "Error: Incorrect number of arguments. Got {args.length}, expected 2."
-       usage
-end
-
-proc.process(args[0], args[1])
diff --git a/contrib/refund/src/refund_base.nit b/contrib/refund/src/refund_base.nit
deleted file mode 100644 (file)
index 48e1833..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Insurance refunds calculation base classes.
-module refund_base
-
-import counter
-
-# `RefundProcessor` manages the calculation of the refunds.
-#
-# See `process`.
-class RefundProcessor
-
-       # Where to generate output file.
-       var output_file: String is noinit, writable
-
-       # Where to save usage statistics.
-       var stats_file = "stats.json"
-
-       # Processes the `input_file` and write the output in `output_file`.
-       #
-       # Steps:
-       #
-       # 1. Parses the input_file and check json validity (see `load_input`).
-       # 2. Instantiates and checks the reclamation sheet against client rules
-       #   (see `ReclamationSheet.from_json`).
-       # 3. Processes refunds (see `proces_refunds`).
-       # 4. Writes the output file (see `write_output`).
-       fun process(input_file, output_file: String) is abstract
-
-       # Refunds allowed for the current reclamation sheet.
-       var current_refunds = new HashMap[Care, Dollar]
-
-       # Computes allowed refunds for a given `Reclamation` found in a `ReclamationSheet`.
-       fun process_refund(sheet: ReclamationSheet, recl: Reclamation): Dollar is abstract
-
-       # Shows stats values in console
-       fun show_stats do print load_stats
-
-       # Loads stats from file as a RefundStats instance.
-       fun load_stats: RefundStats is abstract
-
-       # Saves stats in file.
-       fun save_stats(stats: RefundStats) is abstract
-
-       # Outputs error object then exit.
-       fun die(msg: String) is abstract
-
-       # Clears stats.
-       #
-       # Basically delete the stats file.
-       fun clear_stats do if stats_file.file_exists then stats_file.file_delete
-end
-
-# Stats representation using a `Counter`.
-class RefundStats
-       super Counter[String]
-end
-
-# A `Client` can ask for refunds from the insurance company.
-class Client
-
-       # Client number.
-       var number: String
-
-       redef fun to_s do return "#{number}"
-end
-
-# A `ReclamationSheet` is filled by the `Client` to obtain a `RefundSheet`.
-class ReclamationSheet
-
-       # File used for this refund.
-       var file: ReclFile is writable
-
-       # Month concerned by the refund.
-       var month: ReclMonth is writable
-
-       # Array of reclamations.
-       var recls = new Array[Reclamation] is writable
-
-       redef fun to_s do
-               return "Refund (file: {file}, month: {month}, recls: {recls.length})"
-       end
-end
-
-# A File found in a `ReclamationSheet`.
-#
-# A File points to a `Contract` and a `Client`.
-#
-# Allowed format is: `X12345` where `X` is the contract kind and `12345` is the
-# client number.
-class ReclFile
-
-       # File string id.
-       var id: String is writable
-
-       # Contract instance linked to this file.
-       var contract: Contract is noinit, writable
-
-       # Client instance linked to this file.
-       var client: Client is noinit, writable
-
-       # Returns the contract instance corresponding to `kind`.
-       fun contract_factory(proc: RefundProcessor, kind: String): Contract do
-               if kind == "A" then return new ContractA
-               if kind == "B" then return new ContractB
-               if kind == "C" then return new ContractC
-               if kind == "D" then return new ContractD
-               if kind == "E" then return new ContractE
-               proc.die("Unknown contract {kind}")
-               abort
-       end
-
-       redef fun to_s do return "{contract.kind}{client.number}"
-end
-
-# Month date formatted for contracts.
-#
-# Mainly used to factorize treatments on date calculation.
-class ReclMonth
-
-       # Internal date used to store the month.
-       var date: ReclDate is writable
-
-       # Is `date` in this month?
-       fun has(date: ReclDate): Bool do return self.date.month == date.month
-
-       redef fun to_s do
-               if date.month < 10 then
-                       return "{date.year}-0{date.month}"
-               end
-               return "{date.year}-0{date.month}"
-       end
-end
-
-# The date on which a `Care` occured.
-class ReclDate
-       # Year of the month.
-       var year: Int is writable
-
-       # Month number (`1` is January).
-       var month: Int is writable
-
-       # Day number.
-       var day: Int is writable
-
-       redef fun to_s do
-               var res = new FlatBuffer
-               res.append "{year}-"
-               if month < 10 then
-                       res.append "0{month}-"
-               else
-                       res.append "{month}-"
-               end
-               if day < 10 then
-                       res.append "0{day}"
-               else
-                       res.append day.to_s
-               end
-               return res.write_to_string
-       end
-end
-
-# `RefundRecl` are parts of the `RefundReclamation`.
-class Reclamation
-       # `Care` id concerned by this reclamation.
-       var care_id: Int is writable
-
-       # Date this care was applied.
-       var date: ReclDate is writable
-
-       # Amount of money given by the `Client` in exchange of this care.
-       var fees: Dollar is writable
-
-       redef fun to_s do return "Entry (care: {care_id}, date: {date}, fees: {fees})"
-end
-
-# A `Contract` specifies the refund applicable on care.
-class Contract
-
-       # Kind of the contract (specified by a letter).
-       var kind: String is noinit, writable
-
-       # Covered cares for this kind of contract.
-       var cares = new Array[Care] is writable
-
-       # Adds a care to this contract.
-       fun add_care(care: Care) do cares.add care
-
-       # Gets a `Care` instance by its id.
-       #
-       # Returns `null` if no `Care` found.
-       fun care_by_id(id: Int): nullable Care do
-               for care in cares do
-                       if care.match_id(id) then return care
-               end
-               return null
-       end
-
-       redef fun to_s do return "{kind} ({cares.length} cares)"
-end
-
-# Contracts
-# FIXME move contracts to a JSON configuration file.
-
-private class ContractA
-       super Contract
-
-       init do
-               kind = "A"
-               add_care(new UniqCare.with_vals(0,   25.0, null, null))
-               add_care(new UniqCare.with_vals(100, 35.0, null, 250.0.to_dollar))
-               add_care(new UniqCare.with_vals(150, 0.0,  null, null))
-               add_care(new UniqCare.with_vals(175, 50.0, null, 200.0.to_dollar))
-               add_care(new UniqCare.with_vals(200, 25.0, null, 250.0.to_dollar))
-               add_care(new RangeCare.with_vals([300..399], 0.0, null, null))
-               add_care(new UniqCare.with_vals(400, 0.0,  null, null))
-               add_care(new UniqCare.with_vals(500, 25.0, null, 150.0.to_dollar))
-               add_care(new UniqCare.with_vals(600, 40.0, null, 300.0.to_dollar))
-               add_care(new UniqCare.with_vals(700, 0.0,  null, null))
-       end
-end
-
-private class ContractB
-       super Contract
-
-       init do
-               kind = "B"
-               add_care(new UniqCare.with_vals(0,   50.0, 40.0.to_dollar, null))
-               add_care(new UniqCare.with_vals(100, 50.0, 50.0.to_dollar, 250.0.to_dollar))
-               add_care(new UniqCare.with_vals(150, 0.0,  null, null))
-               add_care(new UniqCare.with_vals(175, 75.0, null, 200.0.to_dollar))
-               add_care(new UniqCare.with_vals(200, 100.0,null, 250.0.to_dollar))
-               add_care(new RangeCare.with_vals([300..399], 50.0, null, null))
-               add_care(new UniqCare.with_vals(400, 0.0,  null, null))
-               add_care(new UniqCare.with_vals(500, 50.0, 50.0.to_dollar, 150.0.to_dollar))
-               add_care(new UniqCare.with_vals(600, 100.0,null, 300.0.to_dollar))
-               add_care(new UniqCare.with_vals(700, 70.0, null, null))
-       end
-end
-
-private class ContractC
-       super Contract
-
-       init do
-               kind = "C"
-               add_care(new UniqCare.with_vals(0,   90.0, null, null))
-               add_care(new UniqCare.with_vals(100, 95.0, null, 250.0.to_dollar))
-               add_care(new UniqCare.with_vals(150, 85.0, null, null))
-               add_care(new UniqCare.with_vals(175, 90.0, null, 200.0.to_dollar))
-               add_care(new UniqCare.with_vals(200, 90.0, null, 250.0.to_dollar))
-               add_care(new RangeCare.with_vals([300..399], 90.0, null, null))
-               add_care(new UniqCare.with_vals(400, 90.0, null, null))
-               add_care(new UniqCare.with_vals(500, 90.0, null, 150.0.to_dollar))
-               add_care(new UniqCare.with_vals(600, 75.0, null, 300.0.to_dollar))
-               add_care(new UniqCare.with_vals(700, 90.0, null, null))
-       end
-end
-
-private class ContractD
-       super Contract
-
-       init do
-               kind = "D"
-               add_care(new UniqCare.with_vals(0,   100.0, 85.0.to_dollar,  null))
-               add_care(new UniqCare.with_vals(100, 100.0, 75.0.to_dollar,  250.0.to_dollar))
-               add_care(new UniqCare.with_vals(150, 100.0, 150.0.to_dollar, null))
-               add_care(new UniqCare.with_vals(175, 95.0,  null,  200.0.to_dollar))
-               add_care(new UniqCare.with_vals(200, 100.0, 100.0.to_dollar, 250.0.to_dollar))
-               add_care(new RangeCare.with_vals([300..399],100.0, null, null))
-               add_care(new UniqCare.with_vals(400, 100.0, 65.0.to_dollar,  null))
-               add_care(new UniqCare.with_vals(500, 100.0, null,  150.0.to_dollar))
-               add_care(new UniqCare.with_vals(600, 100.0, 100.0.to_dollar, 300.0.to_dollar))
-               add_care(new UniqCare.with_vals(700, 100.0, 90.0.to_dollar, null))
-       end
-end
-
-private class ContractE
-       super Contract
-
-       init do
-               kind = "E"
-               add_care(new UniqCare.with_vals(0,   15.0, null, null))
-               add_care(new UniqCare.with_vals(100, 25.0, null, 250.0.to_dollar))
-               add_care(new UniqCare.with_vals(150, 15.0, null, null))
-               add_care(new UniqCare.with_vals(175, 25.0, 20.0.to_dollar, 200.0.to_dollar))
-               add_care(new UniqCare.with_vals(200, 12.0, null, 250.0.to_dollar))
-               add_care(new RangeCare.with_vals([300..399], 60.0, null, null))
-               add_care(new UniqCare.with_vals(400, 25.0, 15.0.to_dollar, null))
-               add_care(new UniqCare.with_vals(500, 30.0, 20.0.to_dollar, 150.0.to_dollar))
-               add_care(new UniqCare.with_vals(600, 15.0, null, 300.0.to_dollar))
-               add_care(new UniqCare.with_vals(700, 22.0, null, null))
-       end
-end
-
-# A `Care` is payed by the `Client` and can raises a `Refund`.
-interface Care
-
-       # Does `id` is acceptable for this care?
-       fun match_id(id: Int): Bool is abstract
-
-       # Percent covered for this kind of care.
-       fun cover: Float is abstract
-
-       # Max amount covered for this kind of care by reclamation.
-       fun max: nullable Dollar is abstract
-
-       # Max amount covered for this kind of care by month.
-       fun month_max: nullable Dollar is abstract
-
-       # Computes the refund for this care.
-       fun process_refund(fees: Dollar): Dollar do
-               var max = self.max
-               var val = ((fees.value.to_f * (cover / 100.0)) / 100.0).to_dollar
-               if max != null and val > max then val = max
-               return val
-       end
-end
-
-# A `UniqCare` refers to one and only one kind of `Care`.
-#
-# For example, the care `Ostéopathie` as the uniq id `200`.
-class UniqCare
-       super Care
-
-       # Care id.
-       var id: Int
-
-       redef fun match_id(id) do return self.id == id
-
-       redef var cover = 0.0
-       redef var max = null
-       redef var month_max = null
-
-       # Inits this `Care` with values.
-       #
-       # * `id`: the `Care` id.
-       # * `cover`: refund percentage covered for this `Care`.
-       # * `max`: max amount refunded for this `Care` in a reclamation sheet.
-       # * `month_max`: max amount refunded by month.
-       init with_vals(id: Int, cover: Float, max, month_max: nullable Dollar) do
-               init(id)
-               self.cover = cover
-               self.max = max
-               self.month_max = month_max
-       end
-
-       redef fun to_s do return id.to_s
-end
-
-# A `RangeCare` refers to a set of id corresponding to the same `Care`.
-#
-# For example, the care `Soins Dentaires` is refered by the ids 300 to 399.
-class RangeCare
-       super Care
-
-       # Care id range.
-       var id: Range[Int]
-
-       redef fun match_id(id) do return self.id.has(id)
-       redef var cover = 0.0
-       redef var max = null
-       redef var month_max = null
-
-       # Inits this `Care` with values.
-       #
-       # * `id`: the `Care` id.
-       # * `cover`: refund percentage covered for this `Care`.
-       # * `max`: max amount refunded for this `Care` in a reclamation sheet.
-       # * `month_max`: max amount refunded by month.
-       init with_vals(id: Range[Int], cover: Float, max, month_max: nullable Dollar) do
-               init(id)
-               self.cover = cover
-               self.max = max
-               self.month_max = month_max
-       end
-
-       redef fun to_s do return id.first.to_s
-end
-
-# Used to represent currencies values.
-class Dollar
-       super Comparable
-
-       redef type OTHER: Dollar
-
-       # Amount of cents.
-       var value: Int
-
-       # Inits `self` from a float `value`.
-       init from_float(value: Float) do
-               init((value * 100.0).to_i)
-       end
-
-       redef fun to_s do return "{value / 100}.{value % 100}$"
-       redef fun <(o) do return value < o.value
-
-       # Dollars addition.
-       fun +(o: Dollar): Dollar do return new Dollar(value + o.value)
-
-       # Dollars substraction.
-       fun -(o: Dollar): Dollar do return new Dollar(value - o.value)
-end
-
-redef class Float
-       # Returns `self` as a Dollar instance.
-       fun to_dollar: Dollar do return new Dollar.from_float(self)
-end
diff --git a/contrib/refund/src/refund_json.nit b/contrib/refund/src/refund_json.nit
deleted file mode 100644 (file)
index f670f9d..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# JSON handling for `refund`.
-module refund_json
-
-import refund_base
-import json::static
-import json
-
-redef class RefundProcessor
-
-       redef fun process(input_file, output_file) do
-               self.output_file = output_file
-               var json = load_input(input_file)
-               var sheet = new ReclamationSheet.from_json(self, json)
-               var res = process_refunds(sheet)
-               write_output(res.to_pretty_json, output_file)
-       end
-
-       # Computes allowed refunds for a given `ReclamationSheet`.
-       fun process_refunds(sheet: ReclamationSheet): JsonObject do
-               # update stats
-               var stats = load_stats
-               stats.inc("total_treatments")
-               # compute refunds
-               current_refunds.clear
-               var json = new JsonObject
-               json["dossier"] = sheet.file.to_s
-               json["mois"] = sheet.month.to_s
-               var arr = new JsonArray
-               var sum = 0.0.to_dollar
-               for recl in sheet.recls do
-                       var refund = process_refund(sheet, recl)
-                       var obj = new JsonObject
-                       obj["soin"] = recl.care_id
-                       obj["date"] = recl.date.to_s
-                       obj["montant"] = refund.to_s
-                       arr.add obj
-                       sum += refund
-                       # update stats for care
-                       stats.inc("total_{recl.care_id}")
-               end
-               save_stats(stats)
-               json["remboursements"] = arr
-               json["total"] = sum.to_s
-               return json
-       end
-
-       # Loads the input string and returns its content as a JsonObject.
-       #
-       # Dies if the file cannot be read or does not contain a valid JSONObject.
-       fun load_input(file: String): JsonObject do
-               if not file.file_exists then
-                       die("File `{file}` not found.")
-                       abort
-               end
-               var ptr = new FileReader.open(file)
-               var json = ptr.read_all.parse_json
-               if json isa JsonParseError then
-                       die("Wrong input file ({json.message})")
-                       abort
-               else if json == null then
-                       die("Unable to parse input file as json (got null)")
-                       abort
-               else if not json isa JsonObject then
-                       die("Wrong input type (expected JsonObject got {json.class_name})")
-                       abort
-               end
-               ptr.close
-               return json
-       end
-
-       # Writes `str` in path specified by `file`.
-       #
-       # Used to produce output and stats.
-       fun write_output(str: String, file: String) do
-               var ofs = new FileWriter.open(file)
-               ofs.write(str)
-               ofs.write("\n")
-               ofs.close
-       end
-
-       # UTILS
-
-       # Does `json` contains `key`? Dies otherwise.
-       private fun check_key(json: JsonObject, key: String) do
-               if json.has_key(key) then return
-               die("Malformed input (missing key {key})")
-       end
-
-       # Does `str` match the regex `re`.
-       private fun check_format(str, re: String): Bool do
-               return str.has(re.to_re)
-       end
-
-       redef fun die(msg) do
-               # save error
-               var obj = new JsonObject
-               obj["message"] = msg
-               write_output(obj.to_pretty_json, output_file)
-               # update stats
-               var stats = load_stats
-               stats.inc("total_reject")
-               save_stats(stats)
-               # leave
-               exit 1
-       end
-
-       redef fun show_stats do print load_stats.to_json_object.to_pretty_json
-
-       redef fun load_stats do
-               # If no stats found, return a new object
-               if not stats_file.file_exists then return new RefundStats
-               # Try to read from file
-               var ifs = new FileReader.open(stats_file)
-               var content = ifs.read_all.parse_json
-               ifs.close
-               # If file is corrupted, return a new object
-               if not content isa JsonObject then return new RefundStats
-               # Return file contained stats
-               return new RefundStats.from_json(content)
-       end
-
-       redef fun save_stats(stats) do
-               write_output(stats.to_json_object.to_pretty_json, stats_file)
-       end
-end
-
-redef class RefundStats
-
-       # Inits `self` from the content of a JsonObject
-       init from_json(json: JsonObject) do
-               for k, v in json do self[k] = v.as(Int)
-       end
-
-       # Outputs `self` as a JSON string.
-       fun to_json_object: JsonObject do
-               var obj = new JsonObject
-               for k, v in self do obj[k] = v
-               return obj
-       end
-end
-
-redef class ReclamationSheet
-
-       # Inits `self` from the content of a `JsonObject`.
-       init from_json(proc: RefundProcessor, json: JsonObject) do
-               file = new ReclFile.from_json(proc, json)
-               month = new ReclMonth.from_json(proc, json)
-               recls = parse_recls(proc, json)
-               init(file, month)
-       end
-
-       # Parses and checks the given `json` then returns an array of `Reclamation` instances.
-       private fun parse_recls(proc: RefundProcessor, json: JsonObject): Array[Reclamation] do
-               proc.check_key(json, "reclamations")
-               var res = new Array[Reclamation]
-               var recls = json["reclamations"]
-               if recls == null then
-                       proc.die("Wrong type for `number` (expected JsonArray got null)")
-                       abort
-               else if not recls isa JsonArray then
-                       proc.die("Wrong type for `number` (expected JsonArray got {recls.class_name})")
-                       abort
-               end
-               var i = 0
-               for obj in recls do
-                       if obj == null then
-                               proc.die("Wrong type for `reclamations#{i}` (expected JsonObject got null)")
-                               abort
-                       else if not obj isa JsonObject then
-                               proc.die("Wrong type for `reclamations#{i}` " +
-                                       "(expected JsonObject got {obj.class_name})")
-                               abort
-                       end
-                       var recl = new Reclamation.from_json(proc, obj)
-                       if not month.has(recl.date) then
-                               proc.die("Wrong `mois` for `soin` with id `{recl.care_id}`")
-                               abort
-                       end
-                       if file.contract.care_by_id(recl.care_id) == null then
-                               proc.die("Unknown `soin` with id `{recl.care_id}`")
-                               abort
-                       end
-                       res.add recl
-                       i += 1
-               end
-               return res
-       end
-end
-
-redef class ReclFile
-       # Inits `self` from the content of a JsonObject.
-       init from_json(proc: RefundProcessor, json: JsonObject) do
-               proc.check_key(json, "dossier")
-               var id = json["dossier"]
-               if id == null then
-                       proc.die("Wrong type for `dossier` (expected String got null)")
-                       abort
-               else if not id isa String then
-                       proc.die("Wrong type for `dossier` (expected String got {id.class_name})")
-                       abort
-               end
-               # Check format
-               parse_contract(proc, id)
-               parse_client(proc, id)
-               init(id)
-       end
-
-       # Tries to parse the contract from `file_id` string.
-       private fun parse_contract(proc: RefundProcessor, file_id: String) do
-               var kind = file_id.first.to_s
-               if not proc.check_format(kind, "^[A-E]\{1\}$") then
-                       proc.die("Wrong contract (expected A, B, C, D or E got {kind})")
-               end
-               contract = contract_factory(proc, kind)
-       end
-
-       # Tries to parse the client number from the `file_id` string.
-       private fun parse_client(proc: RefundProcessor, file_id: String) do
-               var num = file_id.substring_from(1)
-               if not proc.check_format(num, "^[0-9]\{6\}$") then
-                       proc.die("Wrong format for `number` (expected XXXXXX got {num})")
-                       abort
-               end
-               client = new Client(num)
-       end
-end
-
-redef class ReclMonth
-       # Inits `self` from a `JsonObject`.
-       init from_json(proc: RefundProcessor, json: JsonObject) do
-               proc.check_key(json, "mois")
-               var month = json["mois"]
-               if month == null then
-                       proc.die("Wrong type for `mois` (expected String got null)")
-                       return
-               else if not month isa String then
-                       proc.die("Wrong type for `mois` (expected String got {month.class_name})")
-                       return
-               end
-               if not proc.check_format(month, "^[0-9]\{4\}-[0-9]\{2\}$") then
-                       proc.die("Wrong format for `mois` (expected AAAA-MM got {month})")
-                       return
-               end
-               from_string(proc, month)
-       end
-
-       # Inits `self` from a string representation formatted as `AAAA-MM`.
-       init from_string(proc: RefundProcessor, str: String) do
-               var parts = str.split("-")
-               var year = parts[0].to_i
-               var month = parts[1].to_i
-               if month < 1 or month > 12 then
-                       proc.die("Wrong format for `mois` (expected AAAA-MM got {str})")
-                       return
-               end
-               date = new ReclDate(year, month, 1)
-               init(date)
-       end
-end
-
-redef class ReclDate
-       # Inits `self` from a `JsonObject`.
-       #
-       # Dies if the `json` input is invalid.
-       init from_json(proc: RefundProcessor, json: JsonObject) do
-               proc.check_key(json, "date")
-               var date = json["date"]
-               if date == null then
-                       proc.die("Wrong type for `date` (expected String got null)")
-                       abort
-               else if not date isa String then
-                       proc.die("Wrong type for `date` (expected String got {date.class_name})")
-                       abort
-               end
-               if not proc.check_format(date, "^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}$") then
-                       proc.die("Wrong format for `date` (expected AAAA-MM-DD got {date})")
-                       abort
-               end
-               from_string(proc, date)
-       end
-
-       # Inits `self` from its string representation formatted as `AAAA-MM`.
-       init from_string(proc: RefundProcessor, str: String) do
-               var parts = str.split("-")
-               year = parts[0].to_i
-               month = parts[1].to_i
-               day = parts[2].to_i
-               if month < 1 or month > 12 or day < 1 or day > 31 then
-                       proc.die("Wrong format for `mois` (expected AAAA-MM got {str})")
-                       abort
-               end
-               init(year, month, day)
-       end
-end
-
-redef class Reclamation
-       # Inits `self` from a `JsonObject`.
-       init from_json(proc: RefundProcessor, json: JsonObject) do
-               care_id = parse_care_id(proc, json)
-               date = new ReclDate.from_json(proc, json)
-               fees = parse_fees(proc, json)
-               init(care_id, date, fees)
-       end
-
-       # Inits `self` from its string representation formatted as `Int`.
-       private fun parse_care_id(proc: RefundProcessor, json: JsonObject): Int do
-               proc.check_key(json, "soin")
-               var id = json["soin"]
-               if id == null then
-                       proc.die("Wrong type for `soin` (expected Int got null)")
-                       abort
-               else if not id isa Int then
-                       proc.die("Wrong type for `soin` (expected Int got {id.class_name})")
-                       abort
-               end
-               return id
-       end
-
-       # Inits `self` from its string representation formatted as `0.00$`.
-       private fun parse_fees(proc: RefundProcessor, json: JsonObject): Dollar do
-               proc.check_key(json, "montant")
-               var fees = json["montant"]
-               if fees == null then
-                       proc.die("Wrong type for `fees` (expected String got null)")
-                       abort
-               else if not fees isa String then
-                       proc.die("Wrong type for `fees` (expected String got {fees.class_name})")
-                       abort
-               end
-               if not proc.check_format(fees, "^[0-9]+((\\.|\\,)[0-9]+)?\\$$") then
-                       proc.die("Wrong format for `montant` (expected XX.XX$ got {fees})")
-                       abort
-               end
-               return new Dollar.from_float(fees.basename("$").to_f)
-       end
-end
diff --git a/contrib/refund/tests/client_error1.json b/contrib/refund/tests/client_error1.json
deleted file mode 100644 (file)
index eef9501..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/client_error2.json b/contrib/refund/tests/client_error2.json
deleted file mode 100644 (file)
index a6011f9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A1003233",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/client_error3.json b/contrib/refund/tests/client_error3.json
deleted file mode 100644 (file)
index 7a2fe14..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A10032A",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/client_error4.json b/contrib/refund/tests/client_error4.json
deleted file mode 100644 (file)
index 025d228..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": 1003233,
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractA1.json b/contrib/refund/tests/contractA1.json
deleted file mode 100644 (file)
index 21ebb8b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractA2.json b/contrib/refund/tests/contractA2.json
deleted file mode 100644 (file)
index 13373a1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 0,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractA3.json b/contrib/refund/tests/contractA3.json
deleted file mode 100644 (file)
index c119435..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractA4.json b/contrib/refund/tests/contractA4.json
deleted file mode 100644 (file)
index d6d02b4..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200,00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractA5.json b/contrib/refund/tests/contractA5.json
deleted file mode 100644 (file)
index ca6f222..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "reclamations": [
-               {
-                       "soin": 175,
-                       "date": "2015-01-11",
-                       "montant": "130.00$"
-               },
-               {
-                       "soin": 175,
-                       "date": "2015-01-14",
-                       "montant": "130.00$"
-               },
-               {
-                       "soin": 175,
-                       "date": "2015-01-15",
-                       "montant": "130.00$"
-               },
-               {
-                       "soin": 175,
-                       "date": "2015-01-17",
-                       "montant": "130.00$"
-               }
-       ]
-}
diff --git a/contrib/refund/tests/contractB1.json b/contrib/refund/tests/contractB1.json
deleted file mode 100644 (file)
index 31afc35..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "B100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractB2.json b/contrib/refund/tests/contractB2.json
deleted file mode 100644 (file)
index 16af82c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "B100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 200,
-            "date": "2015-01-11",
-            "montant": "69.00$"
-        },
-        {
-            "soin": 400,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractB3.json b/contrib/refund/tests/contractB3.json
deleted file mode 100644 (file)
index b2df55a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "B100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractB4.json b/contrib/refund/tests/contractB4.json
deleted file mode 100644 (file)
index 555766f..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "B100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200,00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200,00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractB5.json b/contrib/refund/tests/contractB5.json
deleted file mode 100644 (file)
index 0ea3611..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-    "dossier": "B100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "400,00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-11",
-            "montant": "1400,00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractC1.json b/contrib/refund/tests/contractC1.json
deleted file mode 100644 (file)
index 628f9e6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "C100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "100.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-13",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 399,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractC2.json b/contrib/refund/tests/contractC2.json
deleted file mode 100644 (file)
index c9f2a9a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "dossier": "C100323",
-    "mois": "2015-01",
-    "reclamations": []
-}
diff --git a/contrib/refund/tests/contractC3.json b/contrib/refund/tests/contractC3.json
deleted file mode 100644 (file)
index a502605..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "C100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractD1.json b/contrib/refund/tests/contractD1.json
deleted file mode 100644 (file)
index 7a47a3f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "D100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-13",
-            "montant": "900.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "100.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractD2.json b/contrib/refund/tests/contractD2.json
deleted file mode 100644 (file)
index c7fb96f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "dossier": "D100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 200,
-            "date": "2015-01-11",
-            "montant": "69.00$"
-        },
-        {
-            "soin": 400,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "0.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractD3.json b/contrib/refund/tests/contractD3.json
deleted file mode 100644 (file)
index 7580bbf..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "D100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 200,
-            "date": "2015-01-11",
-            "montant": "69.00$"
-        },
-        {
-            "soin": 400,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-       ]
-}
diff --git a/contrib/refund/tests/contractD4.json b/contrib/refund/tests/contractD4.json
deleted file mode 100644 (file)
index 55e50f5..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "D100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractE1.json b/contrib/refund/tests/contractE1.json
deleted file mode 100644 (file)
index 91ba4c1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "E100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-13",
-            "montant": "900.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "100.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractE2.json b/contrib/refund/tests/contractE2.json
deleted file mode 100644 (file)
index d805d2b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "E100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 200,
-            "date": "2015-01-11",
-            "montant": "69.00$"
-        },
-        {
-            "soin": 400,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 600,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contractE3.json b/contrib/refund/tests/contractE3.json
deleted file mode 100644 (file)
index 4cfed1b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "E100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 200,
-            "date": "2015-01-11",
-            "montant": "69.00$"
-        },
-        {
-            "soin": 400,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 500,
-            "date": "2015-01-23",
-            "montant": "400.00$"
-        }
-       ]
-}
diff --git a/contrib/refund/tests/contractE4.json b/contrib/refund/tests/contractE4.json
deleted file mode 100644 (file)
index 6c16688..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "dossier": "E100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 150,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        },
-        {
-            "soin": 175,
-            "date": "2015-01-11",
-            "montant": "200.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contract_error1.json b/contrib/refund/tests/contract_error1.json
deleted file mode 100644 (file)
index feb423f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contract_error2.json b/contrib/refund/tests/contract_error2.json
deleted file mode 100644 (file)
index 4aac886..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "a100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contract_error3.json b/contrib/refund/tests/contract_error3.json
deleted file mode 100644 (file)
index 271111c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "Z100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/contract_error4.json b/contrib/refund/tests/contract_error4.json
deleted file mode 100644 (file)
index 30bd236..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "100100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/dossier_error1.json b/contrib/refund/tests/dossier_error1.json
deleted file mode 100644 (file)
index be5cdc3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/json_error2.json b/contrib/refund/tests/json_error2.json
deleted file mode 100644 (file)
index fe51488..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[]
diff --git a/contrib/refund/tests/json_error3.json b/contrib/refund/tests/json_error3.json
deleted file mode 100644 (file)
index 98232c6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{
diff --git a/contrib/refund/tests/month_error1.json b/contrib/refund/tests/month_error1.json
deleted file mode 100644 (file)
index 9f8213e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "dossier": "A100323",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/month_error2.json b/contrib/refund/tests/month_error2.json
deleted file mode 100644 (file)
index d1f4321..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": 10,
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/month_error3.json b/contrib/refund/tests/month_error3.json
deleted file mode 100644 (file)
index 734fc6a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015/01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/month_error4.json b/contrib/refund/tests/month_error4.json
deleted file mode 100644 (file)
index 26faacf..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-23",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_date_error1.json b/contrib/refund/tests/recl_date_error1.json
deleted file mode 100644 (file)
index 46654c1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_date_error2.json b/contrib/refund/tests/recl_date_error2.json
deleted file mode 100644 (file)
index b26aac6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015/01/11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_date_error3.json b/contrib/refund/tests/recl_date_error3.json
deleted file mode 100644 (file)
index b11c1a9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-13-32",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_date_error4.json b/contrib/refund/tests/recl_date_error4.json
deleted file mode 100644 (file)
index b40c028..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-02-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_error1.json b/contrib/refund/tests/recl_error1.json
deleted file mode 100644 (file)
index 664374e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01"
-}
diff --git a/contrib/refund/tests/recl_error2.json b/contrib/refund/tests/recl_error2.json
deleted file mode 100644 (file)
index 25d29f6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": {
-        "1": {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        "2": {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        "3": {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    }
-}
diff --git a/contrib/refund/tests/recl_error3.json b/contrib/refund/tests/recl_error3.json
deleted file mode 100644 (file)
index eaeb509..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [1, 2, 3]
-}
diff --git a/contrib/refund/tests/recl_error4.json b/contrib/refund/tests/recl_error4.json
deleted file mode 100644 (file)
index c1218bd..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {},
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_fees_error1.json b/contrib/refund/tests/recl_fees_error1.json
deleted file mode 100644 (file)
index 164d3f0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_fees_error2.json b/contrib/refund/tests/recl_fees_error2.json
deleted file mode 100644 (file)
index 8bd0eb5..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "ABCD"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_fees_error3.json b/contrib/refund/tests/recl_fees_error3.json
deleted file mode 100644 (file)
index a51948e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_fees_error4.json b/contrib/refund/tests/recl_fees_error4.json
deleted file mode 100644 (file)
index baf4d5b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 100,
-            "date": "2015-01-11",
-            "montant": "234.00"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_soin_error1.json b/contrib/refund/tests/recl_soin_error1.json
deleted file mode 100644 (file)
index 35f0425..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_soin_error2.json b/contrib/refund/tests/recl_soin_error2.json
deleted file mode 100644 (file)
index 34ffd0b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": "200",
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        },
-        {
-            "soin": 200,
-            "date": "2015-01-13",
-            "montant": "90.00$"
-        },
-        {
-            "soin": 334,
-            "date": "2015-01-23",
-            "montant": "125.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/recl_soin_error3.json b/contrib/refund/tests/recl_soin_error3.json
deleted file mode 100644 (file)
index acf7c8d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "dossier": "A100323",
-    "mois": "2015-01",
-    "reclamations": [
-        {
-            "soin": 900,
-            "date": "2015-01-11",
-            "montant": "234.00$"
-        }
-    ]
-}
diff --git a/contrib/refund/tests/res/client_error1.res b/contrib/refund/tests/res/client_error1.res
deleted file mode 100644 (file)
index 379d67e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `number` (expected XXXXXX got )"
-}
diff --git a/contrib/refund/tests/res/client_error2.res b/contrib/refund/tests/res/client_error2.res
deleted file mode 100644 (file)
index 0984ee4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `number` (expected XXXXXX got 1003233)"
-}
diff --git a/contrib/refund/tests/res/client_error3.res b/contrib/refund/tests/res/client_error3.res
deleted file mode 100644 (file)
index 3490290..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `number` (expected XXXXXX got 10032A)"
-}
diff --git a/contrib/refund/tests/res/client_error4.res b/contrib/refund/tests/res/client_error4.res
deleted file mode 100644 (file)
index 975c246..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong type for `dossier` (expected String got Int)"
-}
diff --git a/contrib/refund/tests/res/contractA1.res b/contrib/refund/tests/res/contractA1.res
deleted file mode 100644 (file)
index 4d0387b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "81.89$"
-       }, {
-               "soin": 200,
-               "date": "2015-01-13",
-               "montant": "22.50$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-23",
-               "montant": "0.0$"
-       }],
-       "total": "104.39$"
-}
diff --git a/contrib/refund/tests/res/contractA2.res b/contrib/refund/tests/res/contractA2.res
deleted file mode 100644 (file)
index cb578a2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 0,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-23",
-               "montant": "0.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-13",
-               "montant": "36.0$"
-       }],
-       "total": "86.0$"
-}
diff --git a/contrib/refund/tests/res/contractA3.res b/contrib/refund/tests/res/contractA3.res
deleted file mode 100644 (file)
index 5cbc843..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "0.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "100.0$"
-       }],
-       "total": "100.0$"
-}
diff --git a/contrib/refund/tests/res/contractA4.res b/contrib/refund/tests/res/contractA4.res
deleted file mode 100644 (file)
index 5cbc843..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "0.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "100.0$"
-       }],
-       "total": "100.0$"
-}
diff --git a/contrib/refund/tests/res/contractA5.res b/contrib/refund/tests/res/contractA5.res
deleted file mode 100644 (file)
index d30e4ba..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "dossier": "A100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "65.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-14",
-               "montant": "65.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-15",
-               "montant": "65.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-17",
-               "montant": "5.0$"
-       }],
-       "total": "200.0$"
-}
diff --git a/contrib/refund/tests/res/contractB1.res b/contrib/refund/tests/res/contractB1.res
deleted file mode 100644 (file)
index 39a5161..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "B100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 200,
-               "date": "2015-01-13",
-               "montant": "90.0$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-23",
-               "montant": "200.0$"
-       }],
-       "total": "340.0$"
-}
diff --git a/contrib/refund/tests/res/contractB2.res b/contrib/refund/tests/res/contractB2.res
deleted file mode 100644 (file)
index 559dcfd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "B100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 200,
-               "date": "2015-01-11",
-               "montant": "69.0$"
-       }, {
-               "soin": 400,
-               "date": "2015-01-13",
-               "montant": "0.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "300.0$"
-       }],
-       "total": "369.0$"
-}
diff --git a/contrib/refund/tests/res/contractB3.res b/contrib/refund/tests/res/contractB3.res
deleted file mode 100644 (file)
index 3556ba0..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "B100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "0.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "150.0$"
-       }],
-       "total": "150.0$"
-}
diff --git a/contrib/refund/tests/res/contractB4.res b/contrib/refund/tests/res/contractB4.res
deleted file mode 100644 (file)
index 3556ba0..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "B100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "0.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "150.0$"
-       }],
-       "total": "150.0$"
-}
diff --git a/contrib/refund/tests/res/contractB5.res b/contrib/refund/tests/res/contractB5.res
deleted file mode 100644 (file)
index 9a31198..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-       "dossier": "B100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "50.0$"
-       }, {
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "0.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-11",
-               "montant": "300.0$"
-       }],
-       "total": "550.0$"
-}
diff --git a/contrib/refund/tests/res/contractC1.res b/contrib/refund/tests/res/contractC1.res
deleted file mode 100644 (file)
index 42f11ed..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "C100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "95.0$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-13",
-               "montant": "180.0$"
-       }, {
-               "soin": 399,
-               "date": "2015-01-23",
-               "montant": "360.0$"
-       }],
-       "total": "635.0$"
-}
diff --git a/contrib/refund/tests/res/contractC2.res b/contrib/refund/tests/res/contractC2.res
deleted file mode 100644 (file)
index 1f8f2bf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-       "dossier": "C100323",
-       "mois": "2015-01",
-       "remboursements": [],
-       "total": "0.0$"
-}
diff --git a/contrib/refund/tests/res/contractC3.res b/contrib/refund/tests/res/contractC3.res
deleted file mode 100644 (file)
index 8c4a0a6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "C100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "170.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "180.0$"
-       }],
-       "total": "350.0$"
-}
diff --git a/contrib/refund/tests/res/contractD1.res b/contrib/refund/tests/res/contractD1.res
deleted file mode 100644 (file)
index b69ed8c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "D100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "75.0$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-13",
-               "montant": "900.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "100.0$"
-       }],
-       "total": "1075.0$"
-}
diff --git a/contrib/refund/tests/res/contractD2.res b/contrib/refund/tests/res/contractD2.res
deleted file mode 100644 (file)
index 2520f7f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-       "dossier": "D100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 200,
-               "date": "2015-01-11",
-               "montant": "69.0$"
-       }, {
-               "soin": 400,
-               "date": "2015-01-13",
-               "montant": "65.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "100.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "0.0$"
-       }],
-       "total": "234.0$"
-}
diff --git a/contrib/refund/tests/res/contractD3.res b/contrib/refund/tests/res/contractD3.res
deleted file mode 100644 (file)
index 2d00ee8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "D100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 200,
-               "date": "2015-01-11",
-               "montant": "69.0$"
-       }, {
-               "soin": 400,
-               "date": "2015-01-13",
-               "montant": "65.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "100.0$"
-       }],
-       "total": "234.0$"
-}
diff --git a/contrib/refund/tests/res/contractD4.res b/contrib/refund/tests/res/contractD4.res
deleted file mode 100644 (file)
index 9f26bfe..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "D100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "150.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "190.0$"
-       }],
-       "total": "340.0$"
-}
diff --git a/contrib/refund/tests/res/contractE1.res b/contrib/refund/tests/res/contractE1.res
deleted file mode 100644 (file)
index 2f9d9c3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "E100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 100,
-               "date": "2015-01-11",
-               "montant": "58.50$"
-       }, {
-               "soin": 334,
-               "date": "2015-01-13",
-               "montant": "540.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "15.0$"
-       }],
-       "total": "613.50$"
-}
diff --git a/contrib/refund/tests/res/contractE2.res b/contrib/refund/tests/res/contractE2.res
deleted file mode 100644 (file)
index 5bb6f4d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "E100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 200,
-               "date": "2015-01-11",
-               "montant": "8.27$"
-       }, {
-               "soin": 400,
-               "date": "2015-01-13",
-               "montant": "15.0$"
-       }, {
-               "soin": 600,
-               "date": "2015-01-23",
-               "montant": "60.0$"
-       }],
-       "total": "83.27$"
-}
diff --git a/contrib/refund/tests/res/contractE3.res b/contrib/refund/tests/res/contractE3.res
deleted file mode 100644 (file)
index f28adb2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       "dossier": "E100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 200,
-               "date": "2015-01-11",
-               "montant": "8.27$"
-       }, {
-               "soin": 400,
-               "date": "2015-01-13",
-               "montant": "15.0$"
-       }, {
-               "soin": 500,
-               "date": "2015-01-23",
-               "montant": "20.0$"
-       }],
-       "total": "43.27$"
-}
diff --git a/contrib/refund/tests/res/contractE4.res b/contrib/refund/tests/res/contractE4.res
deleted file mode 100644 (file)
index 961ec12..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-       "dossier": "E100323",
-       "mois": "2015-01",
-       "remboursements": [{
-               "soin": 150,
-               "date": "2015-01-11",
-               "montant": "30.0$"
-       }, {
-               "soin": 175,
-               "date": "2015-01-11",
-               "montant": "20.0$"
-       }],
-       "total": "50.0$"
-}
diff --git a/contrib/refund/tests/res/contract_error1.res b/contrib/refund/tests/res/contract_error1.res
deleted file mode 100644 (file)
index dd8b5e7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong contract (expected A, B, C, D or E got 1)"
-}
diff --git a/contrib/refund/tests/res/contract_error2.res b/contrib/refund/tests/res/contract_error2.res
deleted file mode 100644 (file)
index c6b464a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong contract (expected A, B, C, D or E got a)"
-}
diff --git a/contrib/refund/tests/res/contract_error3.res b/contrib/refund/tests/res/contract_error3.res
deleted file mode 100644 (file)
index c009811..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong contract (expected A, B, C, D or E got Z)"
-}
diff --git a/contrib/refund/tests/res/contract_error4.res b/contrib/refund/tests/res/contract_error4.res
deleted file mode 100644 (file)
index dd8b5e7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong contract (expected A, B, C, D or E got 1)"
-}
diff --git a/contrib/refund/tests/res/dossier_error1.res b/contrib/refund/tests/res/dossier_error1.res
deleted file mode 100644 (file)
index 8af54e2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key dossier)"
-}
diff --git a/contrib/refund/tests/res/json_error1.res b/contrib/refund/tests/res/json_error1.res
deleted file mode 100644 (file)
index e7eb308..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong input file (Empty JSON)"
-}
diff --git a/contrib/refund/tests/res/json_error2.res b/contrib/refund/tests/res/json_error2.res
deleted file mode 100644 (file)
index 9a451f7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong input type (expected JsonObject got JsonArray)"
-}
diff --git a/contrib/refund/tests/res/json_error3.res b/contrib/refund/tests/res/json_error3.res
deleted file mode 100644 (file)
index 83de0af..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong input file (Malformed JSON object)"
-}
diff --git a/contrib/refund/tests/res/month_error1.res b/contrib/refund/tests/res/month_error1.res
deleted file mode 100644 (file)
index 57810ce..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key mois)"
-}
diff --git a/contrib/refund/tests/res/month_error2.res b/contrib/refund/tests/res/month_error2.res
deleted file mode 100644 (file)
index 16557d6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong type for `mois` (expected String got Int)"
-}
diff --git a/contrib/refund/tests/res/month_error3.res b/contrib/refund/tests/res/month_error3.res
deleted file mode 100644 (file)
index 095cc23..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `mois` (expected AAAA-MM got 2015/01)"
-}
diff --git a/contrib/refund/tests/res/month_error4.res b/contrib/refund/tests/res/month_error4.res
deleted file mode 100644 (file)
index a81529d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `mois` (expected AAAA-MM got 2015-23)"
-}
diff --git a/contrib/refund/tests/res/recl_date_error1.res b/contrib/refund/tests/res/recl_date_error1.res
deleted file mode 100644 (file)
index 307401c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key date)"
-}
diff --git a/contrib/refund/tests/res/recl_date_error2.res b/contrib/refund/tests/res/recl_date_error2.res
deleted file mode 100644 (file)
index 298068d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `date` (expected AAAA-MM-DD got 2015/01/11)"
-}
diff --git a/contrib/refund/tests/res/recl_date_error3.res b/contrib/refund/tests/res/recl_date_error3.res
deleted file mode 100644 (file)
index e8a33ce..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `mois` (expected AAAA-MM got 2015-13-32)"
-}
diff --git a/contrib/refund/tests/res/recl_date_error4.res b/contrib/refund/tests/res/recl_date_error4.res
deleted file mode 100644 (file)
index 6e3f2ca..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong `mois` for `soin` with id `100`"
-}
diff --git a/contrib/refund/tests/res/recl_error1.res b/contrib/refund/tests/res/recl_error1.res
deleted file mode 100644 (file)
index c4e34c8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key reclamations)"
-}
diff --git a/contrib/refund/tests/res/recl_error2.res b/contrib/refund/tests/res/recl_error2.res
deleted file mode 100644 (file)
index 5716df8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong type for `number` (expected JsonArray got JsonObject)"
-}
diff --git a/contrib/refund/tests/res/recl_error3.res b/contrib/refund/tests/res/recl_error3.res
deleted file mode 100644 (file)
index e8f5c80..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong type for `reclamations#0` (expected JsonObject got Int)"
-}
diff --git a/contrib/refund/tests/res/recl_error4.res b/contrib/refund/tests/res/recl_error4.res
deleted file mode 100644 (file)
index 74de465..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key soin)"
-}
diff --git a/contrib/refund/tests/res/recl_fees_error1.res b/contrib/refund/tests/res/recl_fees_error1.res
deleted file mode 100644 (file)
index beebcee..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key montant)"
-}
diff --git a/contrib/refund/tests/res/recl_fees_error2.res b/contrib/refund/tests/res/recl_fees_error2.res
deleted file mode 100644 (file)
index 09232e5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `montant` (expected XX.XX$ got ABCD)"
-}
diff --git a/contrib/refund/tests/res/recl_fees_error3.res b/contrib/refund/tests/res/recl_fees_error3.res
deleted file mode 100644 (file)
index 1679482..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `montant` (expected XX.XX$ got 234)"
-}
diff --git a/contrib/refund/tests/res/recl_fees_error4.res b/contrib/refund/tests/res/recl_fees_error4.res
deleted file mode 100644 (file)
index 1ee1660..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong format for `montant` (expected XX.XX$ got 234.00)"
-}
diff --git a/contrib/refund/tests/res/recl_soin_error1.res b/contrib/refund/tests/res/recl_soin_error1.res
deleted file mode 100644 (file)
index 74de465..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Malformed input (missing key soin)"
-}
diff --git a/contrib/refund/tests/res/recl_soin_error2.res b/contrib/refund/tests/res/recl_soin_error2.res
deleted file mode 100644 (file)
index e57a13e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Wrong type for `soin` (expected Int got ASCIIFlatString)"
-}
diff --git a/contrib/refund/tests/res/recl_soin_error3.res b/contrib/refund/tests/res/recl_soin_error3.res
deleted file mode 100644 (file)
index 3f38e32..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "message": "Unknown `soin` with id `900`"
-}
diff --git a/contrib/refund/tests/tests.sh b/contrib/refund/tests/tests.sh
deleted file mode 100755 (executable)
index 3f1a211..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2015 Alexandre Terrasa <alexandre@moz-code.org>.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-BIN=../bin
-OUT=out
-RES=res
-
-# Execute test with name $1.
-run_test()
-{
-       local test="$1"
-       $BIN/refund $test.json $OUT/$test.res > $OUT/$test.out 2> $OUT/$test.err
-       diff $OUT/$test.res $RES/$test.res > $OUT/$test.diff 2> /dev/null
-}
-
-# Return
-#  0 if the sav not exists
-#  1 if the file does match
-#  2 if the file does not match
-check_result() {
-       local test="$1"
-
-       if [ ! -r "$RES/$test.res" ]; then
-               return 0
-       elif [ ! -s $OUT/$test.diff ]; then
-               return 1
-       else
-               return 2
-       fi
-}
-
-echo "Testing..."
-echo ""
-
-rm -rf $OUT 2>/dev/null
-mkdir $OUT 2>/dev/null
-
-all=0
-ok=0
-ko=0
-sk=0
-
-for file in `ls *.json`; do
-       ((all++))
-       test="${file%.*}"
-       echo -n "* $test: "
-
-       run_test $test
-       check_result $test
-
-       case "$?" in
-               0)
-                       echo "skip ($test.res not found)"
-                       ((sk++))
-                       continue;;
-               1)
-                       echo "success"
-                       ((ok++))
-                       ;;
-               2)
-                       echo "error (diff $OUT/$test.res $RES/$test.res)"
-                       ((ko++))
-                       ;;
-       esac
-done
-
-# clear tmp stats file.
-rm stats.json
-
-echo ""
-echo "==> success $ok/$all ($ko tests failed, $sk skipped)"
-
-# return result
-test "$ok" == "$all"
diff --git a/contrib/wiringPi/README.md b/contrib/wiringPi/README.md
deleted file mode 100644 (file)
index 1085abb..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# wiringPi nit wrapper
-
-## Installation
-
-You need to install the [wiringPi library](http://wiringpi.com/). Refer to [download and install](http://wiringpi.com/download-and-install/) manual.
-
-## Compiling
-
-Link to the library must be passed to nit compiler:
-
-       nitc myprogram.nit --cc-lib-name wiringPi
-
-## Usage
-
-You first need to initialize the wiringPi library using a setup methods.
-
-Setup methods are:
-
-* `wiringPi_setup`: This initialises wiringPi and assumes that the calling program is going to be using the wiringPi pin numbering scheme;
-* `wiringPi_setup_gpio`: Same as wiringPi_setup, however it allows the calling programs to use the Broadcom GPIO pin numbers directly with no re-mapping;
-* `wiringPi_setup_phys`: Identical to wiringPi_setup, however it allows the calling programs to use the physical pin numbers on the P1 connector only;
-* `wiringPi_setup_sys`: This initialises wiringPi but uses the /sys/class/gpio interface rather than accessing the hardware directly;
-
-For example:
-
-       # init wiringPi lib with gpio output
-       wiringPi_set_gpio
-
-Then you can refer to a GPIO Pin using its id:
-
-       var pin = new RPIPin(23)
-
-Before read or write a value on a pin you need to set its mode.
-
-Modes are:
-
-* INPUT
-* OUTPUT
-* PWM_OUTPUT
-* GPIO_CLOCK
-
-Note that only wiringPi pin 1 (BCM\_GPIO 18) supports PWM output and only wiringPi pin 7 (BCM\_GPIO 4) supports CLOCK output modes.
-
-       pin.mode(new RPIPinMode.output_mode)
-
-You can then `write` or `read` a value from the pin:
-
-       pin.write(true)
-       pin.read
-
-## Copyrigth
-
-The wiringPi library is released under [GNU LGPLv3](http://www.gnu.org/copyleft/lesser.html) licence.
-
diff --git a/contrib/wiringPi/examples/shift.nit b/contrib/wiringPi/examples/shift.nit
deleted file mode 100644 (file)
index 35101fa..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module shift is example
-
-import wiringPi
-
-if args.is_empty or args.length > 2 then
-       print "usage:"
-       print "\tshift <register> <state>"
-       print "\tshift clear"
-       print "\tshift all"
-       exit(1)
-end
-
-# init wiringPi lib
-wiringPi_setup
-
-# register layout and pin numbering
-var nb_pins = 8
-var ser_pin = 7
-var rclk_pin = 6
-var srclk_pin = 5
-var sr = new SR595(nb_pins, ser_pin, rclk_pin, srclk_pin)
-
-# set all registers to 0
-if args.first == "clear" then
-       sr.clear_registers
-# set all registers to 1
-else if args.first == "all" then
-       var regs = new Array[Bool].filled_with(true, nb_pins)
-       sr.clear_registers
-       sr.write_all(regs)
-# set specified register to specified value
-else
-       if args[1].to_i == 0 then
-               sr.write(args.first.to_i, false)
-       else
-               sr.write(args.first.to_i, true)
-       end
-end
diff --git a/contrib/wiringPi/lib/wiringPi.nit b/contrib/wiringPi/lib/wiringPi.nit
deleted file mode 100644 (file)
index d21cbbb..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Nit wrapping of the wiringPi library [http://wiringpi.com/]
-# WiringPi is an Arduino wiring-like library written in C
-# and released under the GNU LGPLv3 license which is usable
-# from C and C++ and many other languages with suitable wrappers
-module wiringPi
-
-in "C Header" `{
-       #include <wiringPi.h>
-
-       typedef struct {
-               int id;
-       } CRPiPin;
-`}
-
-
-# Initializes wiringPi.
-# Assumes that the calling program is going to be using the wiringPi pin numbering scheme.
-fun wiringPi_setup `{ wiringPiSetup(); `}
-
-# Same as wiringPi_setup, but with GPIO.
-# It allows the calling programs to use the Broadcom GPIO pin numbers directly with no re-mapping.
-fun wiringPi_setup_gpio `{ wiringPiSetupGpio(); `}
-
-# Same as to wiringPi_setup, but with physical pin numbers.
-# It allows the calling programs to use the physical pin numbers on the P1 connector only.
-fun wiringPi_setup_phys `{ wiringPiSetupPhys(); `}
-
-# This initializes wiringPi, but with the /sys/class/gpio interface.
-# Use `/sys/class/gpio` rather than accessing the hardware directly.
-fun wiringPi_setup_sys `{ wiringPiSetupSys(); `}
-
-# A Raspberry Pi GPIO Pin
-extern class RPiPin `{ CRPiPin *`}
-       new (id: Int) `{
-               CRPiPin *pin = malloc( sizeof(CRPiPin) );
-               pin->id = id;
-               return pin;
-       `}
-
-       # The pin `id` depends on wiringPi setup used
-       fun id: Int `{ return self->id; `}
-
-       # Sets the mode of the pin
-       fun mode(mode: RPiPinMode) `{ pinMode(self->id, mode); `}
-
-       # This sets the pull-up or pull-down resistor mode on the given pin,
-       # which should be set as an input.
-       fun pullup_dncontrol(pud: PUDControl) `{ pullUpDnControl(self->id, pud); `}
-
-       # Writes the value HIGH or LOW (true or false) to the given pin which must
-       # have been previously set as an output.
-       fun write(high: Bool) `{ digitalWrite(self->id, high? HIGH: LOW); `}
-
-       # Writes the value to the PWM register for the given pin.
-       # The Raspberry Pi has one on-board PWM pin, pin 1 (BMC_GPIO 18, Phys 12)
-       # and the range is 0-1024.
-       # Other PWM devices may have other PWM ranges.
-       fun pwm_write(value: Int) `{ pwmWrite(self->id, value); `}
-
-       # This function returns the value read at the given pin.
-       # It will be HIGH or LOW (true or false) depending on the logic level at the pin.
-       fun read: Bool `{ return digitalRead(self->id) == HIGH? true: false; `}
-end
-
-# RPI Pin modes
-# Modes are:
-# * INPUT
-# * OUTPUT
-# * PWM_OUTPUT
-# * GPIO_CLOCK
-# Note that only wiringPi pin 1 (BCM_GPIO 18) supports PWM output
-# and only wiringPi pin 7 (BCM_GPIO 4) supports CLOCK output modes.
-extern class RPiPinMode `{ int `}
-       new input_mode `{ return INPUT; `}
-       new output_mode `{ return OUTPUT; `}
-       new pwm_mode `{ return PWM_OUTPUT; `}
-       new clock_mode `{ return GPIO_CLOCK; `}
-end
-
-# The BCM2835 has both pull-up an down internal resistors.
-# The parameter pud should be:
-# * PUD_OFF, (no pull up/down)
-# * PUD_DOWN (pull to ground)
-# * PUD_UP (pull to 3.3v)
-# The internal pull up/down resistors have a value of approximately
-# 50Kohms on the Raspberry Pi.
-extern class PUDControl `{ int `}
-       new off `{ return PUD_OFF; `}
-       new down `{ return PUD_DOWN; `}
-       new up `{ return PUD_UP; `}
-end
-
-# Abstraction a daisy chain of 74×595 shift registers
-class SR595
-       private var registers: Array[Bool]
-       private var nb_pins: Int
-       private var ser: RPiPin
-       private var rclk: RPiPin
-       private var srclk: RPiPin
-
-       # Initialize a new shift register chain
-       # `nb_pins`: number of pins available
-       # `ser_pin`: SER (serial) pin id
-       # `rclk_pin`: RCLK (register clock) pin id
-       # `srclk_pin`: SRCLK (serial clock) pin id
-       init(nb_pins, ser_pin, rclk_pin, srclk_pin: Int) do
-               # configure pin layout
-               self.nb_pins = nb_pins
-               self.ser = new RPiPin(7)
-               self.rclk = new RPiPin(6)
-               self.srclk = new RPiPin(5)
-               clear_registers
-               # enable output mode on shift register output
-               ser.mode(new RPiPinMode.output_mode)
-               rclk.mode(new RPiPinMode.output_mode)
-               srclk.mode(new RPiPinMode.output_mode)
-       end
-
-       # write 'state' on register 'reg'
-       fun write(reg: Int, state: Bool) do
-               registers[reg] = state
-               write_registers
-       end
-
-       # write all registers
-       fun write_all(regs: Array[Bool]) do
-               assert regs.length == nb_pins
-               registers = regs
-               write_registers
-       end
-
-       # clear all registers
-       fun clear_registers do
-               registers = new Array[Bool].filled_with(false, nb_pins)
-               write_registers
-       end
-
-       private fun write_registers do
-               rclk.write(false)
-               var i = registers.length - 1
-               while i >= 0 do
-                       var reg = registers[i]
-                       srclk.write(false)
-                       ser.write(reg)
-                       srclk.write(true)
-                       i -= 1
-               end
-               rclk.write(true)
-       end
-end
-
diff --git a/doc/manual/.gitignore b/doc/manual/.gitignore
new file mode 100644 (file)
index 0000000..07784df
--- /dev/null
@@ -0,0 +1,7 @@
+blank
+nitreference.aux
+nitreference.epub
+nitreference.log
+nitreference-main.md
+nitreference-main.tex
+nitreference.pdf
diff --git a/doc/manual/Makefile b/doc/manual/Makefile
new file mode 100644 (file)
index 0000000..8e54885
--- /dev/null
@@ -0,0 +1,2 @@
+nitreference.pdf: *.md
+       ./makedoc.sh
diff --git a/doc/manual/attribute.md b/doc/manual/attribute.md
new file mode 100644 (file)
index 0000000..cd7da73
--- /dev/null
@@ -0,0 +1,59 @@
+# Attributes
+
+`var`, used inside concrete and abstract classes, declares attributes. Attributes require a static type and can possibly have an initial value (it may be any kind of expression, even including
+`self`)
+
+~~~
+class Foo
+    var i: Int = 5
+    fun dec(x: Int)
+    do
+        var k = self.i
+        if k > x then self.i = k - x else self.i = 0
+    end
+end
+~~~
+
+Note that from an API point of view, there is no way to distinguish the read access of an attribute with a normal method neither to distinguish a write access of an attribute with a setter. Therefore, the read access of an attribute is called a getter while the write access is called a setter.
+
+~~~nitish
+var x = foo.bar # Is bar an attribute or a method?
+foo.bar = y # Is bar an attribute or a setter?
+# In fact, we do not need to know.
+~~~
+
+## Visibility of Attributes
+
+By default, a getter is public and a setter is private. The visibility of getters can be precised with the `private` or `protected` keywords. The visibility of setters can be specified with an
+additional `writable` keyword.
+
+~~~
+class Foo2
+    var pub_pri: Int
+    protected var pro_pri: Int
+    var pub_pub: Int is writable
+    private var pri_pro: Int is protected writable
+    var pub_pri2: Int is private writable # the default
+end
+~~~
+
+## Redefinition of Attributes
+
+Getters and setters of attributes behave like genuine methods that can be inherited and redefined. Getters and setters can also redefine inherited methods. `redef var` declares that the getter is
+a redefinition while `redef writable` declares that the setter is a redefinition.
+
+~~~
+interface Foo3
+    fun derp: Int is abstract
+    fun derp=(o: Int) is abstract
+end
+class Bar3
+    super Foo3
+    redef var derp is redef writable
+end
+class Baz3
+    super Bar3
+    redef fun derp do return 1
+    redef fun derp=(o) do end
+end
+~~~
diff --git a/doc/manual/basic_type.md b/doc/manual/basic_type.md
new file mode 100644 (file)
index 0000000..a94912f
--- /dev/null
@@ -0,0 +1,153 @@
+# Basic Types
+
+## Object
+
+Nit is a full object language. Every value is an instance of a
+class. Even the basic types described in this section.
+
+`Object` is the root of the class hierarchy. All other classes,
+including the basic ones, are a specialization of `Object`.
+
+Classes, methods and operators presented in this section are defined in
+the standard Nit library that is implicitly imported by every module.
+Many other classes and methods are also defined in the standard library.
+Please look at the specific standard library documentation for all
+details.
+
+## Int and Float
+
+`1`, `-1` are `Int` literals, and `1.0`, `-0.1` are `Float`
+literals. Standard arithmetic operators are available with a common
+precedence rules: `*`, `/`, and `%` (modulo) ; then `+` and `-`. Some
+operators can be composed with the assignment (`=`).
+
+~~~
+var i = 5
+i += 2
+print i # outputs 7
+~~~
+
+Conversion from `Int` to `Float` and `Float` to `Int` must be done with
+the `to_f` and `to_i` methods.
+
+## String
+
+Literal strings are enclosed within quotes (`"`).
+To insert a value
+inside a literal string, include the values inside braces (`{}`).
+Braces has to be escaped.
+`+` is the concatenation operator but is less efficient than the brace form.
+
+~~~
+var j = 5
+print "j={j}; j+1={j+1}" # outputs "j=5; j+1=6"
+~~~
+
+Common escaping sequences are available (`\"`, `\n`, `\t`, etc.) plus the escaped brace `\{`.
+
+~~~
+print "hel\"lo\nwo\{rld"
+# outputs `hel"lo` on a first line
+# and `wo{rld` on a second line
+~~~
+
+Multi-line strings are enclosed with triple quotes (`"""`).
+Values are inserted with a triple braces (`{{{value}}}`).
+The multi-line form thus allows verbatim new-lines, quotes and braces
+
+~~~
+print """some text
+with line breaks
+and characters like " and {
+but {{{ 1+2 }}} is rendered as 3
+"""
+~~~
+
+All objects have a `to_s` method that converts the object to a String.
+`print` is a top-level method that takes any number of arguments and
+prints to the standard output. `print` always add a newline, another
+top-level method, `printn`, does not add the newline.
+
+~~~
+var x: String
+x = 5.to_s # -> the String "5"
+print x # outputs "5"
+~~~
+
+## Bool
+
+`true` and `false` are the only two `Bool` values. Standard
+Boolean operators are available with the standard precedence rule:
+`not`; then `and`; then `or`.
+
+Common comparison operators are available: `==` and `!=` on all objects;
+`<`, `>`, `<=`, `>=` and `<=>` on `Comparable` objects (which include
+`Int`, `String` and others).
+
+- `==`, `<`, `>`, `<=`, `>=` and `<=>` are standard Nit operators (so they are redefinable).
+
+- `and`, `or` and `not` are not standard Nit operators: they are not
+  redefinable, also they are lazy and have adaptive typing flow
+  effects.
+
+- `==` is not for reference equality but for value equality (like
+  `equals` in Java). There is a special reference equality operator,
+  `is`, but it cannot be redefined and its usage is not recommended.
+  Note also that while `==` is redefinable, it has a special adaptive
+  typing flow effect when used with `null`.
+
+- `!=` is not a standard Nit operator. In fact `x != y` is
+  syntactically equivalent to `not x == y`.
+
+## Array
+
+`Array` is a generic class, thus `Array[Int]` denotes an array
+of integers and `Array[Array[Bool]]` denotes an array of array of
+Booleans. Literal arrays can be declared with the bracket notation
+(`[]`). Empty arrays can also be instantiated with the `new` keyword and
+elements added with the `add` method. Elements can be retrieved or
+stored with the bracket operator.
+
+~~~
+var a = [1, 2, 3, 4] # A literal array of integers
+print a.join(":") # outputs "1:2:3:4"
+var b = new Array[Int] # A new empty array of integers
+b.add(10)
+b.add_all(a)
+b.add(20)
+print b[0] # outputs "10"
+print b.length # outputs "6"
+b[1] = 30
+print b.join(", ") # outputs "10, 30, 2, 3, 4, 20"
+~~~
+
+Note that the type of literal arrays is deduced using the static type
+combination rule.
+
+## Range
+
+`Range` is also a generic class but accepts only `Discrete`
+types (`Int` is discrete). There are two kinds of literal ranges, the
+open one `[1..5[` that excludes the last element, and the closed one
+`[1..5]` that includes it.
+
+~~~
+print([1..5[.join(":")) # outputs "1:2:3:4"
+print([1..5].join(":")) # outputs "1:2:3:4:5"
+~~~
+
+Ranges are mainly used in `for` loops.
+
+## HashMap
+
+`HashMap` is a generic class that associates keys with values.
+There is no literal hashmap, therefore the `new` keyword is used to
+create an empty `HashMap` and the bracket operators are used to store
+and retrieve values.
+
+~~~
+var h = new HashMap[String, Int]
+# h associates strings to integers
+h["six"] = 6
+print h["six"] + 1 # outputs "7"
+~~~
diff --git a/doc/manual/class.md b/doc/manual/class.md
new file mode 100644 (file)
index 0000000..b778c43
--- /dev/null
@@ -0,0 +1,49 @@
+# Classes
+
+`interface`, `abstract class`, `class` and `enum` are the four kinds of classes. All these classes can be in multiple inheritance, can define new methods and redefine inherited method (yes, even interfaces).
+
+Here are the differences:
+
+-   interfaces can only specialize other interfaces, cannot have     attributes, cannot have constructors, cannot be instantiated.
+
+-   abstract classes cannot specialize enums, can have attributes, must have constructors, cannot be instantiated.
+
+-   concrete classes (i.e. `class`) cannot specialize enums, can have attributes, must have constructors, can be instantiated.
+
+-   enums (e.g. `Int` or `Bool`) can only specialize interfaces, cannot have attributes, cannot have constructors, have proper instances but they are not instantiated by the programmer—it means no `new Int`. Note that at this point there is no user-defined enums.
+
+All kinds of classes must have a name, can have some superclasses and can have some definitions of properties. Properties are methods, attributes, constructors and virtual types. All kinds of classes can also be generic. When we talk about “classes” in general, it means all these four kinds. We say “concrete classes” to designate only the classes declared with the `class` keyword alone.
+
+## Class Specialization
+
+`super` declares superclasses. Classes inherit methods, attributes and virtual-types defined in their superclasses. Currently, constructors are inherited in a specific manner.
+
+`Object` is the root of the class hierarchy. It is an interface and all other kinds of classes are implicitly a subclass of `Object`.
+
+There is no repeated inheritance nor private inheritance. The specialization between classes is transitive, therefore `super` declarations are superfluous (thus ignored).
+
+## Class Refinement
+
+`redef` allows modules to refine imported classes (even basic ones). Refining a class means:
+
+-   adding new properties: methods, attributes, constructors, virtual types;
+
+-   redefining existing properties: methods and constructors;
+
+-   adding new superclasses.
+
+Note that the kind or the visibility of a class cannot be changed by a refinement. Therefore, it is allowed to just write `redef class X` whatever is the kind or the visibility of `X`.
+
+In programs, the real instantiated classes are always the combination of all their refinements.
+
+~~~
+redef class Int
+    fun fib: Int
+    do
+        if self < 2 then return self
+        return (self-1).fib + (self-2).fib
+    end
+end
+# Now all integers have the fib method
+print 15.fib # outputs 610
+~~~
diff --git a/doc/manual/constructor.md b/doc/manual/constructor.md
new file mode 100644 (file)
index 0000000..38a32c3
--- /dev/null
@@ -0,0 +1,242 @@
+# Constructors
+
+Constructors in Nit behave differently.
+
+Their objective is double :
+
+* be compatible with full multiple-inheritance
+* be simple enough to be KISS and compatible with the principle of least surprise.
+
+
+## `new` construction and simple classes
+
+Classes in OO models are often a simple aggregates of attributes and methods.
+
+By default, the `new` construction require a value for each attribute defined in a class without a default value.
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+var p = new Product("ABC", "Bla bla", 15.95)
+assert p.id == "ABC"
+~~~
+
+In subclasses, additional attributes are automatically collected.
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+class Book
+       super Product
+       var author: String
+end
+
+var book = new Book("ABC", "Bla bla", 15.95, "John Doe")
+~~~
+
+
+## special `init` method
+
+The special init method is automatically invoked after the end of a `new` construction.
+It is used to perform additional systematic tasks.
+
+Because the `init` is run at the end of the initialization sequence, initialized attributes are usable in the body.
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+class OverpricedProduct
+       super Product
+       init
+       do
+               price = price * 10.0
+       end
+end
+var op = new OverpricedProduct("ABC", "Bla bla", 15.95)
+assert op.price.is_approx(159.50, 0.001)
+~~~
+
+
+## Uncollected attributes
+
+There is three cases for an attributes to not be collected in the `new`.
+
+* Attributes with a default value
+* Attributes with the annotation `noinit`
+* Attributes introduced in refinement of classes
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+class TaxedProduct
+       super Product
+       var tax_rate = 9.90
+       var total_price: Float is noinit
+       init
+       do
+               total_price = price * (1.0 + tax_rate/100.0)
+       end
+end
+var tp = new TaxedProduct("ABC", "Bla bla", 15.95)
+assert tp.total_price.is_approx(17.52905, 0.00001)
+~~~
+
+Note: The orchestration here is important. In order, the following is executed:
+
+1. All defauts values are computed and set
+2. Setters are invoked.
+3. `init` is invoked.
+
+Therefore, `total_price` cannot be initialised with a default value, because at the time of the computation of the default values, the attribute `price` in not yet initialised.
+
+
+## Generalized initializers
+
+Initializers are methods that are automatically invoked by the new.
+In fact, by default, the setter of an attribute is used as a initializer.
+
+`autoinit` is used to register a method as a setter.
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+class FooProduct
+       super Product
+       fun set_xy(x, y: Int) is autoinit do z = x * 10 + y
+       var z: Int is noinit
+end
+var fp = new FooProduct("ABC", "Bla bla", 15.96, 1, 3)
+assert fp.z == 13
+~~~
+
+Generalized setters are a powerful tool but often needed in only rare specific cases.
+In most case, there is no reason that an argument of a `new` construction is not stored in the object as a real attribute.
+
+
+## Inheritance
+
+As explained above, one of the main advantage of these constructors is their compatibility with multiple inheritance.
+
+~~~
+class Product
+       var id: String
+       var description: String
+       var price: Float
+end
+class OverpricedProduct
+       super Product
+       init
+       do
+               price = price * 10.0
+       end
+end
+class TaxedProduct
+       super Product
+       var tax_rate = 9.90
+       var total_price: Float is noinit
+       init
+       do
+               total_price = price * (1.0 + tax_rate/100.0)
+       end
+end
+class FooProduct
+       super Product
+       fun set_xy(x, y: Int) is autoinit do z = x * 10 + y
+       var z: Int is noinit
+end
+class MultiProduct
+       super OverpricedProduct
+       super TaxedProduct
+       super FooProduct
+end
+var mp = new MultiProduct("ABC", "Bla bla", 15.96, 1, 3)
+assert mp.id == "ABC"
+assert mp.price.is_approx(159.6, 0.001)
+assert mp.total_price.is_approx(175.4, 0.001)
+assert mp.z == 13
+~~~
+
+
+## Named init
+
+Named `init` are less flexible trough inheritance, thus should no be used.
+They allow to have additional constructor for classes and more control in the construction mechanism.
+
+~~~
+class Point
+       var x: Float
+       var y: Float
+
+       init origin
+       do
+               init(0.0, 0.0)
+       end
+
+       init polar(r, phi: Float)
+       do
+               var x = r * phi.cos
+               var y = r * phi.sin
+               init(x, y)
+       end
+
+       redef fun to_s do return "({x},{y})"
+end
+var p1 = new Point(1.0, 2.0)
+assert p1.to_s ==  "(1.0,2.0)"
+var p2 = new Point.origin
+assert p2.to_s ==  "(0.0,0.0)"
+var p3 = new Point.polar(1.0, 2.0)
+assert p3.to_s ==  "(-0.416,0.909)"
+~~~
+
+
+## Legacy `init`
+
+nameless `init` defined with argument or with an explicit visibility are still accepted as a fallback of the old-constructors.
+They should not be used since they will be removed in a near future.
+
+
+## `new` factories
+
+`new` factories permit to completely shortcut the class instantiation mechanim.
+It could be used to provide `new` syntax on non-concrete class (mainly `extern class`).
+
+`new` factories behave like a top-level function that return the result of the construction.
+It is basically some kind of syntactic sugar.
+
+~~~
+abstract class Person
+       var age: Int
+       new(age: Int)
+       do
+               if age >= 18 then
+                       return new Adult(age)
+               else
+                       return new Child(age)
+               end
+       end
+end
+class Adult
+       super Person
+       # ...
+end
+class Child
+       super Person
+       # ...
+end
+~~~
diff --git a/doc/manual/genericity.md b/doc/manual/genericity.md
new file mode 100644 (file)
index 0000000..0b96f92
--- /dev/null
@@ -0,0 +1,27 @@
+# Generic Classes
+
+Generic classes are defined with formal generic parameters
+declared within brackets. Formal generic parameters can then be used as
+a regular type inside the class. Generic classes must always be
+qualified when used.
+
+~~~
+class Pair[E]
+    var first: E
+    var second: E
+    fun is_same: Bool
+    do
+        return self.first == self.second
+    end
+end
+var p1 = new Pair[Int](1, 2)
+print p1.second * 10 # outputs "20"
+print p1.is_same # outputs "false"
+var p2 = new Pair[String]("hello", "world")
+p2.first = "world"
+print p2.is_same # outputs "true"
+~~~
+
+Unlike many object-oriented languages, generic classes in Nit yield a
+kind of sub-typing. For example, `Pair[Int]` is a subtype of
+`Pair[Object]`.
diff --git a/doc/manual/makedoc.sh b/doc/manual/makedoc.sh
new file mode 100755 (executable)
index 0000000..10f6452
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
+echo > blank
+cat \
+       syntax.md blank\
+       basic_type.md blank\
+       structure.md blank\
+       variable.md blank\
+       module.md blank\
+       class.md blank\
+       method.md blank\
+       attribute.md blank\
+       constructor.md blank\
+       genericity.md blank\
+       virtual_type.md\
+       | sed -e '/\[\[!template/d' \
+       -e 's/\[\[\([^|]*\)|\([^]]*\)\]\]/\1 \\goto{\2}/g' \
+       -e 's/\[\[\([^]]*\)\]\]/\1 \\goto{\1}/g' \
+       > nitreference-main.md
+pandoc nitreference-main.md -f markdown -t latex --listings -o nitreference-main.tex
+pdflatex nitreference.tex
+pandoc nitreference-main.md -V title="Nit Reference" -f markdown -t epub -o nitreference.epub
diff --git a/doc/manual/method.md b/doc/manual/method.md
new file mode 100644 (file)
index 0000000..ded7093
--- /dev/null
@@ -0,0 +1,213 @@
+# Methods
+
+`fun` declares methods. Methods must have a name, may have parameters, and may have a return type. Parameters are typed; however, a single type can be used for multiple parameters.
+
+~~~nitish
+fun foo(x, y: Int, s: String): Bool # ...
+~~~
+
+`do` declares the body of methods. Alike control structures, a one-liner version is available.
+Therefore, the two following methods are equivalent.
+
+~~~
+fun next1(i: Int): Int
+do
+    return i + 1
+end
+
+fun next2(i: Int): Int do return i + 1
+~~~
+
+Inside the method body, parameters are considered as variables. They can be assigned and are subject to adaptive typing.
+
+`self`, the current receiver, is a special parameter. It is not assignable but is subject to adaptive typing.
+
+`return` exits the method and returns to the caller. In a function, the return value must be provided with a return in all control flow paths.
+
+## Method Call
+
+Calling a method is usually done with the dotted notation `x.foo(y, z)`. The dotted notation can be chained.
+
+A method call with no argument does not need parentheses. Moreover, even with arguments, the parentheses are not required in the principal method of a statement.
+
+~~~
+var a = [1]
+a.add 5 # no () for add
+print a.length # no () for length, no () for print
+~~~
+
+However, this last facility requires that the first argument does not start with a parenthesis or a bracket.
+
+~~~nitish
+foo (x).bar # will be interpreted as (foo(x)).bar
+foo [x].bar # will be interpreted as (foo[x]).bar
+~~~
+
+## Method Redefinition
+
+`redef` denotes methods that are redefined in subclasses or in class refinements. The number and the types of the parameters must be invariant. Thus, there is no need to reprecise the types of the parameters, only names are mandatory.
+
+The return type can be redefined to be a more precise type. If same type is returned, there is no need to reprecise it.
+
+The visibility, also, cannot be changed, thus there is also no need to reprecise it.
+
+~~~
+class Foo
+    # implicitly an Object
+    # therefore inherit '==' and 'to_s'
+    var i: Int
+    redef fun to_s do return "Foo{self.i}"
+    redef fun ==(f) do return f isa Foo and f.i == self.i
+end
+~~~
+
+## Abstract Methods
+
+`is abstract` indicates methods defined without a body. Subclasses and refinements can then redefine it (the `redef` is still mandatory) with a proper body.
+
+~~~
+interface Foo
+    fun derp(x: Int): Int is abstract
+end
+class Bar
+    super Foo
+    redef fun derp(x) do return x + 1
+end
+~~~
+
+Concrete classes may have abstract methods. It is up to a refinement to provide a body.
+
+## Call to Super
+
+`super` calls the “previous” definition of the method. It is used in a redefinition of a method in a subclass or in a refinement, It can be used with or without arguments; in the latter case, the original arguments are implicitly used.
+
+The `super` of Nit behave more like the `call-next-method` of CLOS that the `super` of Java or Smalltalk. It permits the traversal of complex class hierarchies and refinement. Basically, `super` is polymorphic: the method called by `super` is not only determined by the class of
+definition of the method but also by the dynamic type of `self`.
+
+The principle it to produce a strict order of the redefinitions of a method (the linearization). Each call to `super` call the next method definition in the linearization. From a technical point of view, the linearization algorithm used is based on C3. It ensures that:
+
+-   A definition comes after its redefinition.
+
+-   A redefinition in a refinement comes before a redefnition in its superclass.
+
+-   The order of the declaration of the superclasses is used as the
+    ultimate disambiguation.
+
+<!-- -->
+
+~~~
+class A
+    fun derp: String do return "A"
+end
+class B
+    super A
+    redef fun derp do return "B" + super
+end
+class C
+    super A
+    redef fun derp do return "C" + super
+end
+class D
+    super B
+    super C
+    redef fun derp do return "D" + super
+    # Here the linearization order of the class D is DBCA
+    # D before B because D specializes B
+    # B before A because B specializes A
+    # D before C because D specializes C
+    # C before A because C specializes A
+    # B before C because in D 'super B' is before 'super C'
+end
+var b = new B
+print b.derp # outputs "BA"
+var d = new D
+print d.derp # outputs "DBCA"
+~~~
+
+## Operators and Setters
+
+Operators and setters are methods that require a special syntax for their definition and their invocation.
+
+-   binary operators: `+`, `-`, `*`, `/`, `\%`, `==`, `<`, `>`, `<=`,`>=`, `<<`, `>>` and `<=>`. Their definitions require exactly one     parameter and a return value. Their invocation is done with `x + y` where `x` is the receiver, `+` is the operator, and `y` is the argument.
+
+-   unary operator: `-`. Its definition requires a return value but no parameter. Its invocation is done with `-x` where `x` is the receiver.
+
+-   bracket operator: `[]`. Its definition requires one parameter or more and a return value. Its invocation is done with `x[y, z]` where `x` is the receiver, `y` the first argument and `z` the second argument.
+
+-   setters: `something=` where `something` can be any valid method identifier. Their definitions require one parameter or more and no return value. If there is only one parameter, the invocation is done with `x.something = y` where `x` is the receiver and y the argument. If there is more that one parameter, the invocation is done with `x.something(y, z) = t` where `x` is the receiver, `y` the first argument, `z` the second argument and `t` the last argument.
+
+-   bracket setter: `[]=`. Its definition requires two parameters or more and no return value. Its invocation is done with `x[y, z] = t` where `x` is the receiver, `y` the first argument, `z` the second argument and `t` the last argument.
+
+<!-- -->
+
+~~~nitish
+class Foo
+    fun +(a: Bar): Baz do ...
+    fun -: Baz do ...
+    fun [](a: Bar): Baz do ...
+    fun derp(a: Bar): Baz do ...
+    fun derp=(a: Bar, b: Baz) do ...
+    fun []= (a: Bar, b: Baz) do ...
+end
+var a: Foo = ...
+var b: Bar = ...
+var c: Baz = ...
+c = a + b
+c = -b
+c = a[b] # The bracket operator '[]'
+c = a.derp(b) # A normal method 'derp'
+a.derp(b) = c # A setter 'derp='
+a[b] = c # The bracket setter '[]='
+~~~
+
+`+=` and `-=` are combinations of the assignment (`=`) and a binary operator. These feature are extended to setters where a single `+=` is in fact three method calls: a function call, the operator call, then a setter call.
+
+~~~nitish
+a += c # equiv. a = a + c
+a[b] += c # equiv. a[b] = a[b] + c
+a.foo += c # equiv. a.foo = a.foo + c
+a.bar(b) += c # equiv. a.bar(b) = a.bar(b) + c
+~~~
+
+## Variable Number of Arguments
+
+A method can accept a variable number of arguments using ellipsis (`...`). The definition use `x: Foo...` where `x` is the name of the parameter and `Foo` a type. Inside the body, the static type of `x` is `Array[Foo]`. The caller can use 0, 1, or more arguments for the parameter `x`. Only one ellipsis is allowed in a signature.
+
+~~~
+fun foo(x: Int, y: Int..., z: Int)
+do
+    print "{x};{y.join(",")};{z}"
+end
+foo(1, 2, 3, 4, 5) # outputs "1;2,3,4;5"
+foo(1, 2, 3) # outputs "1;2;3"
+~~~
+
+## Top-level Methods and Main Body
+
+Some functions, like `print`, are usable everywhere simply without using a specific receiver. Such methods are just defined outside any classes. In fact, these methods are implicitly defined in the
+`Object` interface, therefore inherited by all classes, therefore usable everywhere. However, this principle may change in a future version.
+
+In a module, the main body is a bunch of statements at the end of a file. The main body of the main module is the program entry point. In fact, the main method of a program is implicitly defined as the redefinition of the method `main` of the `Sys` class; and the start of the program is the implicit statement `(Sys.new).main`. Note that because it is a redefinition, the main part can use `super` to call the “previous” main part in the imported modules. If there is no main part
+in a module, it is inherited from imported modules.
+
+Top-level methods coupled with the main body can be used to program in a pseudo-procedural way. Therefore, the following programs are valid:
+
+~~~
+print "Hello World!"
+~~~
+
+~~~
+fun sum(i, j: Int): Int
+do
+    return i + j
+end
+print sum(4, 5)
+~~~
+
+## Intern and Extern Methods
+
+`intern` and `extern` indicate concrete methods whose body is not written in Nit.
+
+The body of `intern` methods is provided by the compiler itself for performance or bootstrap reasons. For the same reasons, some intern methods, like `+` in `Int` are not redefinable.
+
+The body of `extern` methods is provided by libraries written in C; for instance, the system libraries required for input/output. Extern methods are always redefinable. See [[FFI]] for more information on `extern` methods.
diff --git a/doc/manual/module.md b/doc/manual/module.md
new file mode 100644 (file)
index 0000000..9fcd7e9
--- /dev/null
@@ -0,0 +1,92 @@
+# Modules
+
+`module` declares the name of a module. While optional it is recommended to use it, at least for documentation purpose. The basename of the source file must match the name declared with `module`. The extension of the source file must be `nit`.
+
+A module is made of, in order:
+
+-   the module declaration;
+-   module importations;
+-   class definitions (and refinements) ;
+-   top-level function definitions (and redefinitions) ;
+-   main instructions .
+
+## Module Importation
+
+`import` declares dependencies between modules. By default (that is without any `import` declaration), a module publicly imports the module `standard`. Dependencies must not produce cycles. By importing a module, the importer module can see and use classes and properties defined in the imported module.
+
+-   `import` indicates a public importation. Importers of a given module will also import its publicly imported modules. An analogy is using `#include` in a header file (`.h`) in C/C++.
+
+-   `private import` indicates a private importation. Importers of a given module will not  automatically import its privately imported modules. An analogy is using `#include` in a body file (`.c`) in C/C++.
+
+-   `intrude import` indicates an intrusive importation. `intrude` `import` bypasses the `private` visibility and gives to the importer module a full access on the imported module. Such an import may only be considered when modules are strongly bounded and developed together. The closest, but insufficient, analogy is something like including a body file in a body file in C/C++.
+
+## Visibility
+
+By default, all classes, methods, constructors and virtual types are public which means freely usable by any importer module. Once something is public it belongs to the API of the module and should not be changed.
+
+`private` indicates classes and methods that do not belong to the API. They are still freely usable inside the module but are invisible in other modules (except those that use `intrude import`).
+
+`protected` indicates restricted methods and constructors. Such methods belong to the API of the module but they can only be used with the `self` receiver. Basically, `protected` methods are limited to the current class and its subclasses. Note that inside the module (and in
+intrude importers), there is still no restriction.
+
+Visibility of attributes is more specific and is detailed in its own section.
+
+~~~nitish
+module m1
+class Foo
+    fun pub do ...
+    protected fun pro
+    do ...
+    private fun pri
+    do ...
+end
+private class Bar
+    fun pri2 do ...
+end
+var x: Foo = ...
+var y: Bar = ...
+# All OK, it is
+# inside the module
+x.foo
+x.pro
+x.pro
+y.pri2
+~~~
+
+<!-- -->
+
+~~~nitish
+module m2
+import m1
+class Baz
+    super Foo
+    fun derp
+    do
+        self.pro # OK
+    end
+end
+var x: Foo = ...
+x.pub # OK
+x.pro # Compile error:
+      # pro is protected
+x.pri # Compile error:
+      # unknown method pri
+
+var y: Bar
+# Compile error:
+# unknown class Bar
+~~~
+
+## Visibility Coherence
+
+In order to guarantee the coherence in the visibility, the following rules apply:
+
+-   Classes and properties privately imported are considered private:     they are not exported and do not belong to the API of the importer.
+
+-   Properties defined in a private class are private.
+
+-   A static type is private if it contains a private class or a private     virtual type.
+
+-   Signatures of public and protected properties cannot contain a private static type.
+
+-   Bounds of public generic class and public virtual types cannot contain a private static type.
diff --git a/doc/manual/nitlanguage.sty b/doc/manual/nitlanguage.sty
new file mode 100644 (file)
index 0000000..f8d8b11
--- /dev/null
@@ -0,0 +1,45 @@
+% This file is part of Nit ( http://www.nitlanguage.org ).
+%
+% Copyright 2011 Jean Privat <jean@pryen.org>
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+%     http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+
+\usepackage{lmodern} % because there is a bizarre 'pdfTeX error (font expansion): auto expansion is only possible with scalable fonts' unless
+\usepackage{listings} % because we extends it
+\usepackage{xcolor} % because we like colors
+
+% definition of the nit language
+\lstdefinelanguage{nit}{%
+keywords={import,class,interface,universal,super,fun,var,redef,protected,private,module,init,do,end,new,%
+               return,if,then,else,while,for,loop,in,isa,isset,break,continue,label,%
+               is,abstract,self,true,false,null,nullable,writable,assert,and,or,not,extern,intern},%
+morecomment=[l]{\#},%
+morestring=[b]",%
+}
+
+% disable spaces ij strings by default
+\lstset{showstringspaces=false}
+
+% easy nice environement for nit listings
+%\lstnewenvironment{lst}[1][]{%
+       \lstset{basicstyle=\scriptsize\ttfamily,%
+       keywordstyle=\bf\color{blue!30!black},%
+       commentstyle=\itshape\color{green!30!black},%
+       language=nit,%
+       backgroundcolor=\color{black!10},%
+       moredelim=[is][\color{yellow!30!black}]{@}{@},%
+tabsize=3}%,%
+%      #1}}{}
+
+% makes @ a nice shortcut for inline Nit code
+%\lstMakeShortInline[basicstyle=\small\ttfamily\color{blue!30!black}]{@}
diff --git a/doc/manual/nitreference.tex b/doc/manual/nitreference.tex
new file mode 100644 (file)
index 0000000..432dba9
--- /dev/null
@@ -0,0 +1,75 @@
+% This file is part of Nit ( http://www.nitlanguage.org ).
+%
+% Copyright 2011 Jean Privat <jean@pryen.org>
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+%     http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+\documentclass[10pt]{article}
+
+\usepackage[T1]{fontenc}
+\usepackage{nitlanguage}
+\usepackage{multicol}
+\usepackage{savetrees}
+\usepackage{listings}
+\usepackage{microtype}
+\usepackage{xcolor}
+\usepackage{comment}
+%\usepackage{../nit_version}
+
+\newcommand\thedoctitle{A Concise Reference of the Nit Language}
+\title{\thedoctitle}
+\author{Jean Privat}
+\date{\today}
+
+\usepackage[bookmarks=false,pdftitle={\thedoctitle}]{hyperref}
+\pdfcompresslevel=9 %best compression level for text and image
+
+%\setcounter{collectmore}{90} % Force better column breaks
+
+\lstMakeShortInline[basicstyle=\small\ttfamily\color{blue!30!black}]{@}
+\lstset{language=nit}
+
+\hypersetup{colorlinks=true}
+\newcommand\goto[1]{\hyperref[#1]{{\color{red}\scriptsize[\ref*{#1}]}}}
+\newcommand\future[1]{}
+\newcommand\passthrough[1]{#1}
+\newcommand\tightlist{}
+
+\geometry{margin=0.35in} % short margins
+% footer
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+\lhead{}
+\chead{}
+\rhead{}
+\lfoot{\small\it\today}
+\cfoot{\small\it\thedoctitle}
+\rfoot{\small\it\thepage}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+\setlength\footskip{15pt}
+
+\begin{document}
+\setlength\columnsep{8pt} % space around big columns
+\begin{multicols}{2}
+\setlength\columnsep{4pt} % space around smalls columns (for examples)
+
+\noindent\textbf{A Concise Reference of the Nit Language}
+
+This document attempts to be as short as possible while covering all features of the language in deepth.
+It is not a real manual to learn the language since concepts are covered when required.
+%Forward and backward references about concepts are written like this~\goto{redef} which means Section~\ref*{redef}.
+%An index\goto{index} also lists concepts and keywords for an improved navigation.
+
+\input{nitreference-main.tex}
+\end{multicols}
+\end{document}
diff --git a/doc/manual/structure.md b/doc/manual/structure.md
new file mode 100644 (file)
index 0000000..b3a319d
--- /dev/null
@@ -0,0 +1,176 @@
+# Control Structures
+
+Traditional procedural control structures exist in Nit. They
+also often exist in two versions: a one-liner and a block version.
+
+## Control Flow
+
+Control structures dictate the control flow of the
+program. Nit heavily refers to the control flow in its specification:
+
+-   No unreachable statement;
+
+-   No usage of undefined variables;
+
+-   No function without a `return` with a value;
+
+-   Adaptive typing.
+
+Some structures alter the control flow but are not described in this
+section: `and`, `or`, `not`, `or else` and `return`.
+
+Note that the control flow is determined only from the position, the
+order and the nesting of the control structures. The real value of the
+expressions used has no effect on the control flow analyses.
+
+~~~nitish
+if true then
+    return
+else
+    return
+end
+print 1 # Compile error: unreachable statement
+~~~
+
+~~~
+if true then
+    return
+end
+print 1 # OK, but never executed
+~~~
+
+## if
+
+~~~
+var exp = true
+# ...
+if exp then print 1
+if exp then print 2 else print 2
+if exp then
+    print 1
+    print 2
+end
+
+if exp then
+    print 1
+    print 2
+else if exp then
+    print 10
+    print 20
+else
+    print 100
+    print 200
+end
+~~~
+
+Note that the following example is invalid since the first line is
+syntactically complete thus the newline terminate the whole `if`
+structure; then an error is signaled since a statement cannot begin with
+`else`.
+
+~~~nitish
+if exp then print 1 # OK: complete 'if' structure
+else print 2 # Syntax error: unexpected 'else'
+~~~
+
+## while
+
+~~~
+var x = 0
+while x < 10 do x += 1
+print x # outputs 10
+
+while x < 20 do
+    print x # outputs 10 11 ... 19
+    x += 1
+end
+~~~
+
+## for
+
+`for` declares an automatic variable used to iterates on `Collection` (`Array` and `Range` are both `Collection`).
+
+~~~
+for i in [1..5] do print i # outputs 1 2 3 4 5
+for i in [1, 4, 6] do
+    print i # outputs 1 4 6
+end
+~~~
+
+`for` can also be used with reversed ranges to iterate in reverse order.
+
+Step can also be used to specify the size of each increment at the end of a for cycle.
+
+~~~
+for i in [9 .. 4].step(-1) do print i # outputs 9 8 7 6 5 4
+for i in [9 .. 4[.step(-2) do print i # outputs 9 7 5
+~~~
+
+## loop
+
+Infinite loops are mainly used with breaks. They are useful to implement *until* loops or to simulate the *exit when* control of Ada.
+
+~~~
+loop
+    print 1
+    if exp then break
+    print 2
+end
+~~~
+
+Note that `loop` is different from `while true` because the control flow does not consider the values of expression.
+
+## do
+
+Single `do` are used to create scope for variables or to be attached with labeled breaks.
+
+~~~
+do
+    var j = 5
+    print j
+end
+# j is not defined here
+~~~
+
+## break, continue and label
+
+Unlabeled `break` exits the current `for`, `while`, `loop`, Unlabeled `continue` skips the current `for`, `while`, `loop`.
+
+`label` can be used with `break` or `continue` to act on a specific control structure (not necessary the current one). The corresponding `label` must be defined after the `end` keyword of the designated control structure.
+
+~~~
+for i in [0..10[ do
+    for j in [0..10[ do
+        if i + j > 15 then break label outer_loop
+       print "{i},{j}"
+        # The 'break' breaks the 'for i' loop
+    end
+end label outer_loop
+~~~
+
+`label` can also be used with `break` and single `do` structures.
+
+~~~
+do
+    print 1 # printed
+    if exp then break label block
+    print 2 # not printed because exp is true
+end label block
+~~~
+
+## abort
+
+`abort` stops the program with a fatal error and prints a stack trace. Since there is currently no exception nor run-time-errors, abort is somewhat used to simulate them.
+
+## assert
+
+`assert` verifies that a given Boolean expression is true, or else it aborts. An optional label can be precised, it will be displayed on the error message. An optional `else` can also be added and will be executed before the abort.
+
+~~~
+assert bla: exp else
+    # `bla` is the label
+    # `exp` is the expression to verify
+    print "Fatal error in module blablabla."
+    print "Please contact the customer service."
+end
+~~~
diff --git a/doc/manual/syntax.md b/doc/manual/syntax.md
new file mode 100644 (file)
index 0000000..1f3deaf
--- /dev/null
@@ -0,0 +1,86 @@
+# Basic Syntax of Nit
+
+The syntax of Nit follows the Pascal tradition and is
+inspired by various script languages (especially Ruby). Its main objective is
+readability.
+
+Indentation is not meaningful in Nit; blocks usually starts with a
+specific keyword and finish with `end`. Newlines are only meaningful at
+the end of declarations, at the end of statements, and after some
+specific keywords. The philosophy is that the newline is ignored if
+something (a statement, a declaration, or whatever) obviously needs more
+input; while the newline terminates lines that seems completed. See the
+complete Nit grammar for more details.
+
+~~~
+# a first complete statement that outputs "2"
+print 1 + 1
+# the second statement is not yet finished
+print 2 +
+# the end of the second statement, outputs "4"
+2
+~~~
+
+Nit aims to achieve some uniformity in its usage of the common
+punctuation: equal (`=`) is for assignment, double equal (`==`) is for
+equality test, column (`:`) is for type declaration, dot (`.`) is for
+polymorphism, comma (`,`) separates elements, and quad (`::`) is for
+explicit designation.
+
+## Identifiers
+
+Identifiers of modules, variables, methods, attributes and
+labels must begin with a lowercase letter and can be followed by
+letters, digits, or underscores. However, the usage of uppercase letters
+(and camelcase) is discouraged and the usage of underscore to separate
+words in identifiers is preferred: `some_identifier`.
+
+Identifiers of classes and types must begin with an uppercase letter and
+can be followed by letters, digits, or underscores. However
+the usage of camelcase is preferred for class identifiers while formal types should be written in all uppercase: `SomeClass` and `SOME_VIRTUAL_TYPE`.
+
+## Style
+
+While Nit does not enforce any kind of source code formatting, the
+following is encouraged:
+
+- indentation uses the tabulation character and is displayed
+  as 8 spaces;
+
+- lines are less than 80 characters long;
+
+- binary operators have spaces around them: `4 + 5`, `x = 5`;
+
+- columns (`:`) and commas (`,`) have a space after them but not
+  before: `var x: X`, `[1, 2, 3]`;
+
+- parenthesis and brackets do not need spaces around them;
+
+- superfluous parenthesis should be avoided;
+
+- the `do` of methods and the single `do` is on its own line and not
+  indented;
+
+- the other `do` are not on a newline.
+
+## Comments and Documentation
+
+As in many script languages, comments begin with a sharp (`#`)
+and run up to the end of the line. Currently, there is no
+multiline-comments.
+
+A comment block right before any definition of module, class, or
+property, is considered as its documentation and will be displayed as
+such by the autodoc. At this point, documentation is displayed verbatim
+(no special formatting or meta-information).
+
+~~~
+# doc. of foo
+module foo
+
+# doc. of Bar
+class Bar
+   # doc. of baz
+   fun baz do end
+end
+~~~
diff --git a/doc/manual/variable.md b/doc/manual/variable.md
new file mode 100644 (file)
index 0000000..906714e
--- /dev/null
@@ -0,0 +1,281 @@
+# Local Variables and Static Typing
+
+`var` declares local variables. In fact there is no global variable in Nit, so in this document *variable* always refers to a local variable. A variable is visible up to the end of the current
+control structure. Two variables with the same name cannot coexist: no nesting nor masking.
+
+Variables are bound to values. A variable cannot be used unless it has a value in all control flow paths (à la Java).
+
+~~~
+var exp = 10
+# ...
+var a
+if exp > 0 then
+    a = 5
+else
+    a = 7
+end
+print a # OK
+~~~
+
+~~~nitish
+var b
+if exp > 0 then
+    b = 6
+end
+print b # Compile error: y is possibly not initialized
+~~~
+
+## Adaptive Typing
+
+Nit features adaptive typing, which means that the static type of a variable can change according to: the assignments of variables, the control flow, and some special operators (`and`, `or`,
+`or else`, `==`, `!=`, and `isa`).
+
+~~~
+var c # a variable
+c = 5
+# static type is Int
+print c + 1 # outputs 6
+c = [6, 7]
+# static type is Array[Int]
+print c[0] # outputs "6"
+~~~
+
+~~~
+# ...
+var d
+if exp > 0 then
+    d = 5
+else
+    d = 6
+end
+# Static type is Int
+print d + 1
+~~~
+
+## Variable Upper Bound
+
+An optional type information can be added to a variable declaration. This type is used as an upper bound of the type of the variable. When a initial value is given in a variable declaration without a specific type information, the static type of the initial value is used as an upper bound. If no type and no initial value are given, the upper bound is set to `nullable Object`.
+
+~~~nitish
+var e: Int # Upper bound is Int
+e = "Hello" # Compile error: expected Int
+
+var f = 5 # Upper bound is Int
+f = "Hello" # Compile error: expected Int
+~~~
+
+~~~
+var g: Object # Upper bound is Object
+g = 5 # OK since Int specializes Object
+
+var h: Object = 5 # Upper bound is Object
+h = "Hello" # OK
+~~~
+
+The adaptive typing flow is straightforward, therefore loops (`for`, `while`, `loop`) have a special requirement: on entry, the upper bound is set to the current static type; on exit, the upper bound is reset to its previous value.
+
+~~~nitish
+var l: Object
+# static type is Object, upper bound is Object
+l = 5
+# static type is Int, bound remains Object
+while l > 0 do
+    # static type remains Int, bound sets to Int
+    l -= 1 # OK
+    l = "Hello" # Compile error: expected Int
+end
+# static type is Int, bound reset to Object
+l = "Hello" # OK
+~~~
+
+## Type Checks
+
+`isa` tests if an object is an instance of a given type. If the expression used in an `isa` is a variable, then its static type is automatically adapted, therefore avoiding the need of a specific cast.
+
+~~~
+var m: Object = 5
+# ...
+if m isa Int then
+    # static type of m is Int
+    print m * 10 # OK
+end
+~~~
+
+Remember that adaptive typing follows the control flow, including the Boolean operators.
+
+~~~
+var n = new Array[Object]
+n.add(1)
+n.add(true)
+n.add("one")
+n.add(11)
+
+for i in n do
+    # the static type of i is Object
+    if not i isa Int then continue
+    # now the static type of i is Int
+    print i * 10 # OK
+end
+~~~
+
+An interesting example:
+
+~~~
+var max = 0
+for i in n do
+    if i isa Int and i > max then max = i
+    # the > is valid since, in the right part
+    # of the "and", the static type of i is Int
+end
+print max # outputs 11
+~~~
+
+Note that type adaptation occurs only in an `isa` if the target type is more specific that the current type.
+
+~~~
+var col: Collection[Int] = [1, 2, 3]
+if col isa Comparable then
+    # the static type is still Collection[Int]
+    # even if the dynamic type of a is a subclass
+    # of both Collection[Int] and Comparable
+    # ...
+end
+~~~
+
+## Nullable Types
+
+`null` is a literal value that is only accepted by some specific static types. However, thanks to adaptive typing, the static type management can be mainly automatic.
+
+`nullable` annotates types that can accept `null` or an expression of a compatible nullable static type.
+
+~~~
+var o: nullable Int
+var p: Int
+o = 1 # OK
+p = 1 # OK
+o = null # OK
+o = p # OK
+~~~
+
+~~~nitish
+p = null # Compile error
+p = o # Compile error
+~~~
+
+Adaptive typing works well with nullable types.
+
+~~~
+var q
+if exp > 0 then
+    q = 5
+else
+    q = null
+end
+# The static type of q is nullable Int
+~~~
+
+Moreover, like the `isa` keyword, the `==` and `!=` operators can adapt the static type of a variable when compared to `null`.
+
+~~~
+var r: nullable Int = 10
+# ...
+if r != null then
+    # The static type of r is Int (without nullable)
+    print r + 6
+end
+# The static type of r is nullable Int
+~~~
+
+And another example:
+
+~~~
+var s: nullable Int = 10
+# ...
+loop
+    if s == null then break
+    # The static type of s is Int
+    print s + 1
+
+    s = null
+    # The static type of s is null
+end
+~~~
+
+`or else` can be used to compose a nullable expression with any other expression. The value of `x or else y` is `x` if `x` is not `null` and is `y` if `x` is null. The static type of `x or else y` is the combination of the type of `y` and the not null version of the type of `x`.
+
+~~~
+var t: nullable Int = 10
+# ...
+var u = t or else 0
+# the static type of u is Int (without nullable)
+~~~
+
+Note that nullable types require a special management for [[attributes|attribute]] and [[constructors|constructor]].
+
+## Explicit Cast
+
+`as` casts an expression to a type. The expression is either casted successfully or there is an `abort`.
+
+~~~
+var v: Object = 5 # static type of v is Object
+print v.as(Int) * 10 # outputs 50
+~~~
+
+~~~nitish
+print v.as(String) # aborts: cast failed
+~~~
+
+Note that `as` does not change the object nor does perform conversion.
+
+~~~
+var w: Object = 5 # static type of w is Object
+print w.as(Int) + 10 # outputs "15"
+print w.to_s + "10" # outputs "510"
+~~~
+
+Because of type adaptation, `as` is rarely used on variables. `isa` (sometime coupled with `assert`) is preferred.
+
+~~~
+var x: Object = 5 # static type of x is Object
+assert x isa Int
+# static type of x is now Int
+print x * 10 # outputs 50
+~~~
+
+`as(not null)` can be used to cast an expression typed by a nullable type to its non nullable version. This form keeps the programmer from writing explicit static types.
+
+~~~
+var y: nullable Int = 5 # static type of y is nullable Int
+print y.as(not null) * 10 # cast, outputs 50
+print y.as(Int) * 10 # same cast, outputs 50
+assert y != null # same cast, but type of y is now Int
+print y * 10 # outputs 50
+~~~
+
+## Static Type Combination Rule
+
+Adaptive typing, literal arrays, and `or else` need to determine a static type by combining other static types. This is done by using the following rule:
+
+-   The final type is `nullable` if at least one of the types is `nullable`.
+
+-   The final type is the static type that is more general than all the other types.
+
+-   If there is no such a type, and the thing typed is a variable, then the final type is the upper bound type of the variable; else there is a compilation error.
+
+<!-- -->
+
+~~~
+var dis: Discrete = 'a'
+# Note: Int < Discrete < Object
+var z
+if exp > 0 then z = 1 else z = dis
+# static type is Discrete
+if exp < 0 then z = 1 else z = "1"
+# static type is nullable Object (upper bound)
+var a1 = [1, dis] # a1 is a Array[Discrete]
+~~~
+
+~~~nitish
+var a2 = [1, "1"] # Compile error:
+        # incompatible types Int and String
+~~~
diff --git a/doc/manual/virtual_type.md b/doc/manual/virtual_type.md
new file mode 100644 (file)
index 0000000..042c721
--- /dev/null
@@ -0,0 +1,20 @@
+# Virtual Types
+
+`type` declares a virtual types in a class. A bound type is
+mandatory. Virtual types can then be used as regular types in the class
+and its subclasses. Subclasses can also redefine it with a more specific
+bound type. One can see a virtual type as an internal formal generic
+parameter or as a redefinable *typedef*.
+
+~~~
+class Foo
+    type E: Object
+    var derp: E
+end
+class Bar
+    super Foo
+    redef type E: Int
+end
+var b = new Bar(5)
+print b.derp + 1 # outputs 6
+~~~
index da03f7c..f07ec47 100644 (file)
@@ -299,7 +299,7 @@ class IniConfig
        super Config
 
        # Config tree used to store config options
-       var ini: ConfigTree is noinit
+       var ini: IniFile is noinit
 
        # Path to app config file
        var opt_config = new OptionString("Path to config file", "--config")
@@ -311,7 +311,7 @@ class IniConfig
 
        redef fun parse_options(args) do
                super
-               ini = new ConfigTree(config_file)
+               ini = new IniFile.from_file(config_file)
        end
 
        # Default config file path
index f386c47..3013321 100644 (file)
@@ -538,6 +538,12 @@ class Bytes
                length += cln
        end
 
+       redef fun has(c)
+       do
+               if not c isa Int then return false
+               return super(c&255)
+       end
+
        #     var b = new Bytes.empty
        #     b.append([104, 101, 108, 108, 111])
        #     assert b.to_s == "hello"
index b51cd22..9e2179b 100644 (file)
@@ -307,6 +307,45 @@ private class StepIterator[E]
        redef fun next_by(step) do real.next_by(step * self.step)
 end
 
+# An iterator that lazyly cache the current item.
+#
+# This class can be used as an helper to build simple iterator with a single and simplier `next_item` method.
+# The only constraint is that `next_item` returns null on the last item, so `null` cannot be a valid element.
+abstract class CachedIterator[E: Object]
+       super Iterator[E]
+
+       # Get the next item if any.
+       # Returns null if there is no next item.
+       fun next_item: nullable E is abstract
+
+       # The last item effectively read.
+       # `null` if on start, after a next of if no more items are available.
+       protected var cache: nullable E = null
+
+       # The current item, if any.
+       # If not, the cache is effectively filled (with `next_item`).
+       # Return `null` iff there is no more elements.
+       protected fun current_item: nullable E
+       do
+               var cache = self.cache
+               if cache != null then return cache
+               cache = next_item
+               self.cache = cache
+               return cache
+       end
+
+       redef fun item do return current_item.as(not null)
+
+       redef fun is_ok do return current_item != null
+
+       redef fun next do
+               # If needed, fill the cache (an consume the current element)
+               current_item
+               # Empty the cache (so the next element will be read)
+               cache = null
+       end
+end
+
 # A collection that contains only one item.
 #
 # Used to pass arguments by reference.
index 152c294..b0486ef 100644 (file)
@@ -484,37 +484,18 @@ end
 # Iterator returned by `Reader::each_line`.
 # See the aforementioned method for details.
 class LineIterator
-       super Iterator[String]
+       super CachedIterator[String]
 
        # The original stream
        var stream: Reader
 
-       redef fun is_ok
+       redef fun next_item
        do
-               var res = not stream.eof
-               if not res and close_on_finish then stream.close
-               return res
-       end
-
-       redef fun item
-       do
-               var line = self.line
-               if line == null then
-                       line = stream.read_line
+               if stream.eof then
+                       if close_on_finish then stream.close
+                       return null
                end
-               self.line = line
-               return line
-       end
-
-       # The last line read (cache)
-       private var line: nullable String = null
-
-       redef fun next
-       do
-               # force the read
-               if line == null then item
-               # drop the line
-               line = null
+               return stream.read_line
        end
 
        # Close the stream when the stream is at the EOF.
index 06989ef..1b4b383 100644 (file)
@@ -2029,25 +2029,76 @@ redef class Float
        # ~~~
        # assert 12.34.to_s       == "12.34"
        # assert (-0120.030).to_s == "-120.03"
+       # assert (-inf).to_s == "-inf"
+       # assert (nan).to_s == "nan"
        # ~~~
        #
        # see `to_precision` for a custom precision.
        redef fun to_s do
-               var str = to_precision( 3 )
-               if is_inf != 0 or is_nan then return str
-               var len = str.length
+               var str = to_precision(3)
+               return adapt_number_of_decimal(str, false)
+       end
+
+       # Return the representation of `self`, with scientific notation
+       #
+       # Adpat the number of decimals as needed from 1 to a maximum of 6
+       # ~~~
+       # assert 12.34.to_sci       == "1.234e+01"
+       # assert 123.45.to_sci.to_f.to_sci  == "1.2345e+02"
+       # assert 0.001234.to_sci  == "1.234e-03"
+       # assert (inf).to_sci == "inf"
+       # assert (nan).to_sci == "nan"
+       # ~~~
+       fun to_sci: String
+       do
+               var is_inf_or_nan = check_inf_or_nan
+               if is_inf_or_nan != null then return is_inf_or_nan
+               return adapt_number_of_decimal(return_from_specific_format("%e".to_cstring), true)
+       end
+
+       # Return the `string_number` with the adapted number of decimal (i.e the fonction remove the useless `0`)
+       # `is_expo` it's here to specifi if the given `string_number` is in scientific notation
+       private fun adapt_number_of_decimal(string_number: String, is_expo: Bool): String
+       do
+               # check if `self` does not need an adaptation of the decimal
+               if is_inf != 0 or is_nan then return string_number
+               var len = string_number.length
+               var expo_value = ""
+               var numeric_value = ""
                for i in [0..len-1] do
-                       var j = len-1-i
-                       var c = str.chars[j]
-                       if c == '0' then
-                               continue
-                       else if c == '.' then
-                               return str.substring( 0, j+2 )
-                       else
-                               return str.substring( 0, j+1 )
+                       var j = len - 1 - i
+                       var c = string_number.chars[j]
+                       if not is_expo then
+                               if c == '0' then
+                                       continue
+                               else if c == '.' then
+                                       numeric_value = string_number.substring( 0, j + 2)
+                                       break
+                               else
+                                       numeric_value = string_number.substring( 0, j + 1)
+                                       break
+                               end
+                       else if c == 'e' then
+                               expo_value = string_number.substring( j, len - 1 )
+                               is_expo = false
                        end
                end
-               return str
+               return numeric_value + expo_value
+       end
+
+       # Return a string representation of `self` in fonction if it is not a number or infinity.
+       # Return `null` if `self` is not a not a number or an infinity
+       private fun check_inf_or_nan: nullable String
+       do
+               if is_nan then return "nan"
+
+               var isinf = self.is_inf
+               if isinf == 1 then
+                       return "inf"
+               else if isinf == -1 then
+                       return  "-inf"
+               end
+               return null
        end
 
        # `String` representation of `self` with the given number of `decimals`
@@ -2062,31 +2113,39 @@ redef class Float
        # ~~~
        fun to_precision(decimals: Int): String
        do
-               if is_nan then return "nan"
+               var is_inf_or_nan = check_inf_or_nan
+               if is_inf_or_nan != null then return is_inf_or_nan
+               return return_from_specific_format("%.{decimals}f".to_cstring)
+       end
 
-               var isinf = self.is_inf
-               if isinf == 1 then
-                       return "inf"
-               else if isinf == -1 then
-                       return  "-inf"
-               end
+       # Returns the hexadecimal (`String`) representation of `self` in exponential notation
+       #
+       # ~~~
+       # assert 12.345.to_hexa_exponential_notation    == "0x1.8b0a3d70a3d71p+3"
+       # assert 12.345.to_hexa_exponential_notation.to_f == 12.345
+       # ~~~
+       fun to_hexa_exponential_notation: String
+       do
+               return return_from_specific_format("%a".to_cstring)
+       end
 
-               var size = to_precision_size(decimals)
-               var cstr = new CString(size+1)
-               to_precision_fill(decimals, size+1, cstr)
-               return cstr.to_s_unsafe(byte_length=size, copy=false)
+       # Return the representation of `self`, with the specific given c `format`.
+       private fun return_from_specific_format(format: CString): String
+       do
+               var size = to_precision_size_with_format(format)
+               var cstr = new CString(size + 1)
+               to_precision_fill_with_format(format, size + 1, cstr)
+               return cstr.to_s_unsafe(byte_length = size, copy = false)
        end
 
-       # Required string length to hold `self` with `nb` decimals
-       #
-       # The length does not include the terminating null byte.
-       private fun to_precision_size(nb: Int): Int `{
-               return snprintf(NULL, 0, "%.*f", (int)nb, self);
+       # The lenght of `self` in the specific given c `format`
+       private fun to_precision_size_with_format(format: CString): Int`{
+               return snprintf(NULL, 0, format, self);
        `}
 
-       # Fill `cstr` with `self` and `nb` decimals
-       private fun to_precision_fill(nb, size: Int, cstr: CString) `{
-               snprintf(cstr, size, "%.*f", (int)nb, self);
+       # Fill `cstr` with `self` in the specific given c `format`
+       private fun to_precision_fill_with_format(format: CString, size: Int, cstr: CString) `{
+               snprintf(cstr, size, format, self);
        `}
 end
 
diff --git a/lib/core/text/u16_string.nit b/lib/core/text/u16_string.nit
new file mode 100644 (file)
index 0000000..e9a9986
--- /dev/null
@@ -0,0 +1,250 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Wrapper of ICU's UTF-16 encoded strings and conversion
+# This module is meant to ease the use of complex string operations provided by the ICU library.
+# The module provides a wrapper for ICU's string structure : `UChar *` as well as conversion functions to/from `String`
+module u16_string is pkgconfig ("icu-io", "icu-i18n", "icu-uc")
+
+intrude import abstract_text
+import core
+
+`{
+       #include <unicode/utypes.h>
+       #include <unicode/ustring.h>
+       #include <unicode/utf16.h>
+`}
+
+
+# UTF-16 encoded string
+class U16String
+       super Finalizable
+       super Text
+
+       # Pointer to a `UChar *` string
+       private var uchar_string: UCharString
+
+       # Number of code units (aka UTF-16 encoded code units or `UChar`) allocated to `uchar_string`
+       private var capacity = 0
+
+       # Number of code units actually in `uchar_string`.
+       # `code_units` <= `capacity`.
+       private var code_units = 0
+
+       redef fun length: Int do return uchar_string.code_points(code_units)
+
+       # Returns an empty `U16String` of capacity `cap` or a NULL `U16String` if no `cap` parameter is provided.
+       # The `cap` argument is the number of code units (aka UTF-16 encoded characters or `UChar`) allocated to `uchar_string`.
+       # If the number of code units is known in advance, it can be provided with the `units` parameter.
+       init (cap: nullable Int, units: nullable Int) do
+               if cap == null then
+                       uchar_string = new UCharString.nul
+               else
+                       assert cap >= 0
+
+                       if not units == null then
+                               assert units <= cap
+                               code_units = units
+                       end
+
+                       uchar_string = new UCharString.empty(cap)
+                       capacity = cap
+               end
+       end
+
+       # Returns a converted `U16String` from a `String`
+       init from_string(source: String) do
+               var csource = source.to_cstring
+               var csource_length = source.byte_length
+
+               uchar_string = new UCharString.nul
+               var required_length = uchar_string.from_cstring(0, csource, csource_length)
+
+               uchar_string = new UCharString.empty(required_length)
+               uchar_string.from_cstring(required_length, csource, csource_length)
+
+               capacity = required_length
+               code_units = source.u16_length
+       end
+
+       # Copies the characters of `source` to `self`.
+       # A maximum of `self.capacity` code units will be copied to `self`.
+       # If a code point >0xFFFF has to be divided, it will not be copied.
+       fun copy_from(source: String) do
+               uchar_string.from_cstring(capacity, source.to_cstring, source.byte_length)
+
+               code_units = source.u16_length
+       end
+
+       redef fun chars do return new U16StringCharView(self)
+
+       redef fun[](index: Int): Char do
+               assert index >= 0 and index < length
+               var offset = 0
+               var c = '\0'
+
+               for i in [0..index] do
+                       c = uchar_string.char_at_offset(offset, code_units)
+                       if c.to_i > 0xFFFF then offset += 2 else offset +=1
+               end
+               return c
+       end
+
+       redef fun to_cstring: CString do
+               var cself = new CString.nul
+               var required_length = uchar_string.to_cstring(cself, 0, code_units)
+
+               cself = new CString(required_length + 1)
+               uchar_string.to_cstring(cself, required_length + 1, code_units)
+
+               return cself
+       end
+
+       # Returns the number of UTF-8 code units (bytes) in `self`
+       redef fun byte_length: Int do
+               var offset = 0
+               var l = 0
+               var c = '\0'
+
+               for i in chars do
+                       c = uchar_string.char_at_offset(offset, code_units)
+                       var b = c.to_i
+                       if b > 0xFFFF then offset += 2 else offset +=1
+
+                       if b <= 0x7F then
+                               l += 1
+                       else if b <= 0x7FF then
+                               l += 2
+                       else if b <= 0xD7FF or b > 0x10FFFF then
+                               l += 0
+                       else if b <= 0xFFFF then
+                               l += 3
+                       else
+                               l += 4
+                       end
+               end
+               return l
+       end
+
+       redef fun to_s: String do return to_cstring.to_s_with_length(byte_length)
+       redef fun finalize do uchar_string.free
+end
+
+# ICU string `UChar *` which are UTF-16 strings
+extern class UCharString `{ UChar *`}
+
+       # Returns an empty `UCharString` of length `length`
+       new empty (length: Int) `{
+               UChar * str = (UChar *)malloc(sizeof(UChar) * length);
+               u_memset(str, 0, length);
+               return str;
+       `}
+
+       # Returns a `NULL` `UCharString`
+       new nul `{ return NULL; `}
+
+       # Returns the number of code points up to `code_units` characters
+       fun code_points(code_units: Int): Int `{
+               if (self == NULL) {
+                       return -1;
+               }
+               return u_countChar32(self, code_units);
+       `}
+
+       # Converts a `CString` to a `UCharString` and returns the required length of said `UCharString`
+       fun from_cstring(dest_length: Int, source: CString, source_length: Int): Int `{
+               UErrorCode error = U_ZERO_ERROR;
+               int32_t res;
+               u_strFromUTF8(self, dest_length, &res, source, source_length, &error);
+               return res;
+       `}
+
+       # Converts `self` to a `CString` and returns the required length (without the termination character) of said `CString`
+       fun to_cstring(dest: CString, dest_length: Int, source_length: Int): Int `{
+               UErrorCode error = U_ZERO_ERROR;
+               int32_t res;
+               u_strToUTF8(dest, dest_length, &res, self, source_length, &error);
+               return res;
+       `}
+
+       # Get code point at code unit `offset`
+       fun char_at_offset(offset: Int, code_units: Int): Char `{
+               UChar32 c = 0;
+               U16_NEXT(self, offset, code_units, c);
+               return c;
+       `}
+end
+
+private class U16StringCharIterator
+       super IndexedIterator[Char]
+
+       var target: U16String
+
+       var curr_pos: Int
+
+       redef fun is_ok do return curr_pos < target.length
+
+       redef fun item do return target[curr_pos]
+
+       redef fun next do curr_pos += 1
+
+       redef fun index do return curr_pos
+end
+
+private class U16StringCharReverseIterator
+       super IndexedIterator[Char]
+
+       var target: U16String
+
+       var curr_pos: Int
+
+       redef fun is_ok do return curr_pos >= 0
+
+       redef fun item do return target[curr_pos]
+
+       redef fun next do curr_pos -= 1
+
+       redef fun index do return curr_pos
+end
+
+private class U16StringCharView
+       super StringCharView
+
+       redef type SELFTYPE: U16String
+
+       redef fun [](index) do return target[index]
+
+       redef fun iterator_from(start) do return new U16StringCharIterator(target, start)
+
+       redef fun reverse_iterator_from(start) do return new U16StringCharReverseIterator(target, start)
+end
+
+redef class String
+       # Returns a UTF-16 encoded version of `self`
+       fun to_u16string: U16String do return new U16String.from_string(self)
+
+       # Returns the number of UTF-16 code units in `self`
+       fun u16_length: Int do
+               var n = 0
+               for c in chars do
+                       if c.to_i > 0xFFFF then n += 2 else n += 1
+               end
+               return n
+       end
+end
+
+redef class CString
+       # Returns a null `char *`
+       new nul `{ return NULL; `}
+end
diff --git a/lib/functional/README.md b/lib/functional/README.md
new file mode 100644 (file)
index 0000000..849a1ae
--- /dev/null
@@ -0,0 +1,108 @@
+# Nit functional types and Iterator API
+
+This lib provides a common interfaces to represent and call any type of routine.
+This is usefull if you want to build a functional API, where user can pass
+functions. Right now, there's no support for anonymous function or function pointer.
+However, one can build classes that inherit from a functional type to simulate
+a function. Here's an example implementing the famous __map__ function:
+
+~~~
+class MapIntToString
+        super Fun1[Int,String]
+        redef fun call(x) do return x.to_s
+end
+
+redef class Array[E]
+        fun map(mapper: Fun1[E, Object]): Array[Object]
+        do
+                var res = new Array[Object]
+                for ele in self do res.add(mapper.call(ele))
+                return res
+        end
+end
+
+var xs = [1,2,3,4]
+var f = new MapIntToString
+assert xs.map(f) == ["1", "2", "3", "4"]
+~~~
+
+Currently, this style of programming seems tedious, but future update of the langage
+will support function pointer and anonymous function.
+
+Functional API makes it easier to build asynchronous or multithreaded code,
+because representing a pending or future computation using a function requires
+much less code:
+
+~~~nitish
+fun long\_calculation
+do
+        ...
+end
+
+# function pointer
+var thread = new Thread(&long\_calculation)
+thread.start
+thread.wait
+~~~
+
+Finally, this lib provides an entire functional API over the `Iterator` class
+similar to the old `Pipeline` lib.
+
+## Functional Types
+
+There are two fundamental types: `FunX[0..X, RES]` and `ProcX[0..X]`, both inherits
+`Routine`. The `X` represents the arity of the routine, eg :
+
+~~~
+import functional
+
+class A
+
+        # to_s isa `Fun0[String]`.
+        redef fun to_s do return "greeting from A"
+end
+
+# f isa `Fun2[Int,Int,Int]`
+fun f(x: Int, y: Int): Int do return x + y
+
+# g isa `Proc2[Int,Int]`
+fun g(x: Int, y: Int) do print "{x + y}"
+~~~
+
+For a `FunX` type the arity doesn't count the return type.
+
+**Note**: The arity doesn't count the receiver of the current class where the
+method belongs.
+
+## Iterator API
+
+The new `Iterator` API provides all the classical functional style transformation:
+map, for\_each, fold, fold1, flatmap, enumerate, any and all.
+
+Most methods return a new `Iterator`, this allow us to chain them:
+
+~~~nitish
+import functional
+
+fun addone(x: Int): Int do return x + 1
+fun square(x: Int): Int do return x * x
+fun add(x:Int, y: Int): Int do return x + y
+
+var xs = [1,2,3,4,5,6,7,8,9,10]
+
+assert xs.iterator.map(&square).map(&addone).fold(0, &add) == 395
+~~~
+
+Some functions collapse the iterator into one value : `all`, `any`, `fold`,
+`fold1`, `for_each` (void-like).
+
+**Note**: Most of the new methods tries to be lazy. However, `Iterator::order_by`
+consume the entire iterator and `Iterator::filter` might consume the entire iterator.
+
+## Usage
+
+To use the new API you must include in your file `import functional`.
+
+## Notes
+
+- The module `functional::functional_gen` is only used to generate `functional::functional_types`.
@@ -1,10 +1,12 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
+# Copyright 2019 Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+#     http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import tests
-
-var graph = new ProjectGraph("foo")
-var buffer = new Buffer
+# Functional types and functional API for `Iterator`
+module functional
 
-graph.put_edges
-graph.debug buffer
-print buffer
+import iter_extras
diff --git a/lib/functional/functional_gen.nit b/lib/functional/functional_gen.nit
new file mode 100644 (file)
index 0000000..e362474
--- /dev/null
@@ -0,0 +1,148 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2019 Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This module is only used to generate `functional_types.nit`
+module functional_gen
+
+# Generates of an array of formal type as strings.
+# The size of the array equals the arity of the class.
+fun gen_generics(nargs: Int): Array[String]
+do
+        var args = new Array[String]
+        for i in [0..nargs[ do
+                args.push("A" + i.to_s)
+        end
+        return args
+end
+
+class RoutineTemplate
+        var classkind: String
+        var classname: String
+        var nb_generics: Int
+        var supers: Array[String]
+        var has_return: Bool
+        var is_redef = false
+        var annotation = "is abstract"
+
+        fun callparams: Array[String]
+        do
+                var generics = gen_generics(nb_generics)
+                var params = new Array[String]
+                for g in generics do
+                        if is_redef then
+                                params.push(g.to_lower)
+                        else
+                                params.push(g.to_lower + ": " + g)
+                        end
+                end
+                return params
+        end
+
+        fun classparams: Array[String]
+        do
+                var res = gen_generics(nb_generics)
+                if has_return then res.add("RESULT")
+                return res
+        end
+
+        redef fun to_s
+        do
+                var signature = ""
+                var callparams = self.callparams
+                var classparams = self.classparams
+
+                if callparams.length > 0 then signature = "({callparams.join(",")})"
+                if has_return then signature += ": RESULT"
+                var classdecl = "{classkind} {classname}"
+                if classparams.length > 0 then classdecl += "[{classparams.join(",")}]"
+                var superdecls = new Array[String]
+                for s in supers do superdecls.add("\tsuper {s}")
+
+                var classdef = new Array[String]
+                var redefkw = ""
+                if is_redef then redefkw = "redef "
+                classdef.add("{classdecl}")
+                classdef.add("{superdecls.join("\n")}")
+                classdef.add("\t{redefkw}fun call{signature} {annotation}")
+                classdef.add("end")
+                return classdef.join("\n")
+        end
+end
+
+# Writes all functional types
+fun generate_functypes(n: Int, writer: Writer)
+do
+        writer.write("""
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This module provides functional type to represents various function forms.
+# Function types can hold up to 20 arguments. The type `Fun` is for function
+# (input and output) and `Proc` is for procedure (input but no output).
+# This file is automatically generated, do not edit it manually.
+module functional_types
+
+interface Routine
+end
+interface Fun
+        super Routine
+end
+interface Proc
+        super Routine
+end
+""")
+        var templates = new Array[String]
+        var templates2 = new Array[String]
+        for i in [0..n[ do
+                var t1 = new RoutineTemplate("interface", "Fun{i}", i, ["Fun"], true)
+                var t2 = new RoutineTemplate("interface", "Proc{i}", i, ["Proc"], false)
+                templates.push(t1.to_s)
+                templates.push(t2.to_s)
+
+                # We want routine ref to be at the end of the file
+                var t3 = new RoutineTemplate("universal", "FunRef{i}", i, ["Fun{i}{t1.classparams}"], true)
+                var procsuper = "Proc{i}"
+                if i > 0 then procsuper = "Proc{i}{t2.classparams}"
+                var t4 = new RoutineTemplate("universal", "ProcRef{i}", i, [procsuper], false)
+                t3.annotation = "is intern"
+                t3.is_redef = true
+                t4.annotation = "is intern"
+                t4.is_redef = true
+                templates2.push(t3.to_s)
+                templates2.push(t4.to_s)
+        end
+        templates.add_all(templates2)
+        templates.add(
+"""
+universal RoutineRef
+end
+""")
+        writer.write(templates.join("\n"))
+end
+
+var fw = new FileWriter.open("functional_types.nit")
+generate_functypes(20, fw)
diff --git a/lib/functional/functional_types.nit b/lib/functional/functional_types.nit
new file mode 100644 (file)
index 0000000..16d67f6
--- /dev/null
@@ -0,0 +1,350 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This module provides functional type to represents various function forms.
+# Function types can hold up to 20 arguments. The type `Fun` is for function
+# (input and output) and `Proc` is for procedure (input but no output).
+# This file is automatically generated, do not edit it manually.
+module functional_types
+
+interface Routine
+end
+interface Fun
+        super Routine
+end
+interface Proc
+        super Routine
+end
+interface Fun0[RESULT]
+       super Fun
+       fun call: RESULT is abstract
+end
+interface Proc0
+       super Proc
+       fun call is abstract
+end
+interface Fun1[A0,RESULT]
+       super Fun
+       fun call(a0: A0): RESULT is abstract
+end
+interface Proc1[A0]
+       super Proc
+       fun call(a0: A0) is abstract
+end
+interface Fun2[A0,A1,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1): RESULT is abstract
+end
+interface Proc2[A0,A1]
+       super Proc
+       fun call(a0: A0,a1: A1) is abstract
+end
+interface Fun3[A0,A1,A2,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2): RESULT is abstract
+end
+interface Proc3[A0,A1,A2]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2) is abstract
+end
+interface Fun4[A0,A1,A2,A3,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3): RESULT is abstract
+end
+interface Proc4[A0,A1,A2,A3]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3) is abstract
+end
+interface Fun5[A0,A1,A2,A3,A4,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4): RESULT is abstract
+end
+interface Proc5[A0,A1,A2,A3,A4]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4) is abstract
+end
+interface Fun6[A0,A1,A2,A3,A4,A5,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5): RESULT is abstract
+end
+interface Proc6[A0,A1,A2,A3,A4,A5]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5) is abstract
+end
+interface Fun7[A0,A1,A2,A3,A4,A5,A6,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6): RESULT is abstract
+end
+interface Proc7[A0,A1,A2,A3,A4,A5,A6]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6) is abstract
+end
+interface Fun8[A0,A1,A2,A3,A4,A5,A6,A7,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7): RESULT is abstract
+end
+interface Proc8[A0,A1,A2,A3,A4,A5,A6,A7]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7) is abstract
+end
+interface Fun9[A0,A1,A2,A3,A4,A5,A6,A7,A8,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8): RESULT is abstract
+end
+interface Proc9[A0,A1,A2,A3,A4,A5,A6,A7,A8]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8) is abstract
+end
+interface Fun10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9): RESULT is abstract
+end
+interface Proc10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9) is abstract
+end
+interface Fun11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10): RESULT is abstract
+end
+interface Proc11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10) is abstract
+end
+interface Fun12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11): RESULT is abstract
+end
+interface Proc12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11) is abstract
+end
+interface Fun13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12): RESULT is abstract
+end
+interface Proc13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12) is abstract
+end
+interface Fun14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13): RESULT is abstract
+end
+interface Proc14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13) is abstract
+end
+interface Fun15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14): RESULT is abstract
+end
+interface Proc15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14) is abstract
+end
+interface Fun16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15): RESULT is abstract
+end
+interface Proc16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15) is abstract
+end
+interface Fun17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16): RESULT is abstract
+end
+interface Proc17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16) is abstract
+end
+interface Fun18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16,a17: A17): RESULT is abstract
+end
+interface Proc18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16,a17: A17) is abstract
+end
+interface Fun19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,RESULT]
+       super Fun
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16,a17: A17,a18: A18): RESULT is abstract
+end
+interface Proc19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18]
+       super Proc
+       fun call(a0: A0,a1: A1,a2: A2,a3: A3,a4: A4,a5: A5,a6: A6,a7: A7,a8: A8,a9: A9,a10: A10,a11: A11,a12: A12,a13: A13,a14: A14,a15: A15,a16: A16,a17: A17,a18: A18) is abstract
+end
+universal FunRef0[RESULT]
+       super Fun0[RESULT]
+       redef fun call: RESULT is intern
+end
+universal ProcRef0
+       super Proc0
+       redef fun call is intern
+end
+universal FunRef1[A0,RESULT]
+       super Fun1[A0,RESULT]
+       redef fun call(a0): RESULT is intern
+end
+universal ProcRef1[A0]
+       super Proc1[A0]
+       redef fun call(a0) is intern
+end
+universal FunRef2[A0,A1,RESULT]
+       super Fun2[A0,A1,RESULT]
+       redef fun call(a0,a1): RESULT is intern
+end
+universal ProcRef2[A0,A1]
+       super Proc2[A0,A1]
+       redef fun call(a0,a1) is intern
+end
+universal FunRef3[A0,A1,A2,RESULT]
+       super Fun3[A0,A1,A2,RESULT]
+       redef fun call(a0,a1,a2): RESULT is intern
+end
+universal ProcRef3[A0,A1,A2]
+       super Proc3[A0,A1,A2]
+       redef fun call(a0,a1,a2) is intern
+end
+universal FunRef4[A0,A1,A2,A3,RESULT]
+       super Fun4[A0,A1,A2,A3,RESULT]
+       redef fun call(a0,a1,a2,a3): RESULT is intern
+end
+universal ProcRef4[A0,A1,A2,A3]
+       super Proc4[A0,A1,A2,A3]
+       redef fun call(a0,a1,a2,a3) is intern
+end
+universal FunRef5[A0,A1,A2,A3,A4,RESULT]
+       super Fun5[A0,A1,A2,A3,A4,RESULT]
+       redef fun call(a0,a1,a2,a3,a4): RESULT is intern
+end
+universal ProcRef5[A0,A1,A2,A3,A4]
+       super Proc5[A0,A1,A2,A3,A4]
+       redef fun call(a0,a1,a2,a3,a4) is intern
+end
+universal FunRef6[A0,A1,A2,A3,A4,A5,RESULT]
+       super Fun6[A0,A1,A2,A3,A4,A5,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5): RESULT is intern
+end
+universal ProcRef6[A0,A1,A2,A3,A4,A5]
+       super Proc6[A0,A1,A2,A3,A4,A5]
+       redef fun call(a0,a1,a2,a3,a4,a5) is intern
+end
+universal FunRef7[A0,A1,A2,A3,A4,A5,A6,RESULT]
+       super Fun7[A0,A1,A2,A3,A4,A5,A6,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6): RESULT is intern
+end
+universal ProcRef7[A0,A1,A2,A3,A4,A5,A6]
+       super Proc7[A0,A1,A2,A3,A4,A5,A6]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6) is intern
+end
+universal FunRef8[A0,A1,A2,A3,A4,A5,A6,A7,RESULT]
+       super Fun8[A0,A1,A2,A3,A4,A5,A6,A7,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7): RESULT is intern
+end
+universal ProcRef8[A0,A1,A2,A3,A4,A5,A6,A7]
+       super Proc8[A0,A1,A2,A3,A4,A5,A6,A7]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7) is intern
+end
+universal FunRef9[A0,A1,A2,A3,A4,A5,A6,A7,A8,RESULT]
+       super Fun9[A0,A1,A2,A3,A4,A5,A6,A7,A8,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8): RESULT is intern
+end
+universal ProcRef9[A0,A1,A2,A3,A4,A5,A6,A7,A8]
+       super Proc9[A0,A1,A2,A3,A4,A5,A6,A7,A8]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8) is intern
+end
+universal FunRef10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,RESULT]
+       super Fun10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9): RESULT is intern
+end
+universal ProcRef10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9]
+       super Proc10[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9) is intern
+end
+universal FunRef11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,RESULT]
+       super Fun11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10): RESULT is intern
+end
+universal ProcRef11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10]
+       super Proc11[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) is intern
+end
+universal FunRef12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,RESULT]
+       super Fun12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11): RESULT is intern
+end
+universal ProcRef12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11]
+       super Proc12[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) is intern
+end
+universal FunRef13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,RESULT]
+       super Fun13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12): RESULT is intern
+end
+universal ProcRef13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12]
+       super Proc13[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) is intern
+end
+universal FunRef14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,RESULT]
+       super Fun14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13): RESULT is intern
+end
+universal ProcRef14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13]
+       super Proc14[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) is intern
+end
+universal FunRef15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,RESULT]
+       super Fun15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14): RESULT is intern
+end
+universal ProcRef15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14]
+       super Proc15[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) is intern
+end
+universal FunRef16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,RESULT]
+       super Fun16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15): RESULT is intern
+end
+universal ProcRef16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15]
+       super Proc16[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) is intern
+end
+universal FunRef17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,RESULT]
+       super Fun17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16): RESULT is intern
+end
+universal ProcRef17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16]
+       super Proc17[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16) is intern
+end
+universal FunRef18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,RESULT]
+       super Fun18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17): RESULT is intern
+end
+universal ProcRef18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17]
+       super Proc18[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17) is intern
+end
+universal FunRef19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,RESULT]
+       super Fun19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,RESULT]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18): RESULT is intern
+end
+universal ProcRef19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18]
+       super Proc19[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18]
+       redef fun call(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18) is intern
+end
+universal RoutineRef
+end
diff --git a/lib/functional/iter_extras.nit b/lib/functional/iter_extras.nit
new file mode 100644 (file)
index 0000000..ec5efe4
--- /dev/null
@@ -0,0 +1,408 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2019 Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This modules provides a new functional interface for `Iterator`.
+module iter_extras
+
+import functional_types
+import cartesian
+
+redef class Array
+
+        # Sorts an array with a function.
+        #
+        # ~~~~nitish
+        # class Person
+        #       var name: String
+        # end
+        #
+        # def get_name(p: Person) do return p.name
+        #
+        # var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
+        # ps.sort_with(&get_name)
+        # assert ps[0].name == "Alfredo"
+        # assert ps[1].name == "Curry"
+        # assert ps[2].name == "Turing"
+        # ~~~~
+        fun sort_with(f: Fun1[E, Comparable])
+        do
+                var cmp = new ComparatorWith[E](f)
+                if length > 1 then
+                        cmp.quick_sort(self, 0, length - 1)
+                end
+        end
+end
+
+redef interface Iterator[E]
+
+        # Applies a function to every elements
+        #
+        # ~~~~nitish
+        # fun add(x: Int): Int do return x + 1
+        #
+        # var f = &add
+        # var xs = [1,2,3,4,5]
+        # var actual = xs.iterator.map(f).to_a
+        # assert actual == [2,3,4,5,6]
+        # ~~~~
+        fun map(f: Fun1[E,Object]): MapIter[E,Object]
+        do
+                return new MapIter[E,Object](self, f)
+        end
+
+        # Iterator that gives the current count and element as a pair
+        fun enumerate: EnumerateIter[E]
+        do
+                return new EnumerateIter[E](self)
+        end
+
+        # Iterator that filters elements by a predicate
+        #
+        # ~~~~nitish
+        # fun lt10(x: Int): Bool do return x < 10
+        #
+        # var pred = &lt10
+        # var xs = [1..20]
+        # var actual = xs.iterator.filter(pred).to_a
+        # assert actual == [1..9].to_a
+        # ~~~~
+        fun filter(pred: Fun1[E,Bool]): FilterIter[E]
+        do
+                return new FilterIter[E](self,pred)
+        end
+
+        # Checks if at least one element respects a predicate
+        #
+        # ~~~~nitish
+        # fun eq10(x: Int): Bool do return x == 10
+        #
+        # var pred = &eq10
+        # var xs = [1,2,5,7,9,10,44]
+        # assert xs.iterator.any(pred)
+        # var ys = []
+        # assert not ys.iterator.any(pred)
+        # assert not [1,2,44].iterator.any(pred)
+        # ~~~~
+        fun any(pred: Fun1[E,Bool]): Bool
+        do
+                for x in self do
+                        if pred.call(x) then
+                                return true
+                        end
+                end
+                return false
+        end
+
+        # Checks if all elements respect a predicate
+        #
+        # ~~~~nitish
+        # fun lt10(x: Int): Bool do return x < 10
+        #
+        # var pred = &lt10
+        # var xs = [1..9]
+        # assert xs.iterator.all(pred)
+        # assert [].iterator.all(pred)
+        # assert not [1..10].iterator.all(pred)
+        # ~~~~
+        fun all(pred: Fun1[E,Bool]): Bool
+        do
+                for x in self do
+                        if not pred.call(x) then
+                                return false
+                        end
+                end
+                return true
+        end
+
+        # Folds an iterator from the left
+        #
+        # ~~~~nitish
+        # fun adder(x: Int, y: Int): Int do return x + y
+        #
+        # var xs = [1..10]
+        # assert xs.iterator.fold(0, &adder) == 55
+        # ~~~~
+        fun fold(acc: Object, f: Fun2[Object, E, Object]): Object
+        do
+                for x in self do
+                        acc = f.call(acc, x)
+                end
+                return acc
+        end
+
+        # Folds and apply two element at a time
+        #
+        # ~~~~nitish
+        # fun min_int(x: Int, y: Int): Int
+        # do
+        #       if x < y then return x
+        #       return y
+        # end
+        #
+        # var xs = [100,423,51,1,-19,55,999,-18]
+        # assert xs.iterator.fold1(&min_int) == -19
+        # ~~~~
+        # REQUIRE : length > 1
+        fun fold1(f: Fun2[E,E,E]): E
+        do
+                var a1 = item
+                next
+                var a2 = item
+                next
+                var res = f.call(a1,a2)
+                for x in self do
+                        res = f.call(res, x)
+                end
+                return res
+        end
+
+        # Apply a mutation function over all elements
+        #
+        # ~~~~nitish
+        # class Person
+        #       var age: Int
+        #       def incr_age
+        #       do
+        #               age += 1
+        #       end
+        # end
+        #
+        # var ps = [new Persone(1), new Person(2), new Person(3)]
+        # var ages = ps.iterator.for_each(&Person::incr_age).map(&Person::age).to_a
+        # assert ages == [2,3,4]
+        # ~~~~
+        fun for_each(f: Proc1[E])
+        do
+                for x in self do
+                        f.call(x)
+                end
+        end
+
+        # Maps every element to a nested structure then flattens it
+        #
+        # ~~~~nitish
+        # fun chars_fn(s: String): Iterator[Char]
+        # do
+        #       return s.chars.iterator
+        # end
+        # var cs = ["aaa","bbb","ccc"]
+        # assert cs.iterator.flat_map(&chars_fn).to_a.join == "aaabbbccc"
+        # ~~~~
+        fun flat_map(f: Fun1[E, Iterator[Object]]): FlatMapIter[E, Object]
+        do
+                return new FlatMapIter[E, Object](self, f)
+        end
+
+        # Generates an `Iterator` whose elements are sorted by the function
+        # passed in argument.
+        #
+        # ~~~~nitish
+        # class Person
+        #       var name: String
+        # end
+        #
+        # def get_name(p: Person) do return p.name
+        #
+        # var ps = [new Person("Turing"), new Person("Curry"), new Person("Alfredo")]
+        # var ordered_names = ps.iterator.order_by(&get_name).map(&get_name).to_a
+        # assert ordered_names == ["Alfredo", "Curry", "Turing"]
+        # ~~~~
+        fun order_by(f: Fun1[E, Comparable]): OrderedIter[E]
+        do
+                return new OrderedIter[E](self, f)
+        end
+
+end
+
+# Base class for all iterators using functional types.
+private abstract class FunIter[OLD,NEW]
+        super Iterator[NEW]
+        var my_iter: Iterator[OLD]
+
+        redef fun next
+        do
+                my_iter.next
+        end
+
+        redef fun start
+        do
+                my_iter.start
+        end
+
+        redef fun finish
+        do
+                my_iter.finish
+        end
+
+        redef fun is_ok
+        do
+                return my_iter.is_ok
+        end
+end
+
+# An iterator that maps each item with `f`.
+class MapIter[A,B]
+        super FunIter[A,B]
+        var f: Fun1[A, B]
+
+        redef fun item
+        do
+                return f.call(my_iter.item)
+        end
+
+end
+
+# An iterator that maps each item to a pair containing the item with its
+# current count.
+class EnumerateIter[E]
+        super FunIter[E, Pair[Int,E]]
+
+        redef fun item
+        do
+               return new Pair[Int,E](0, my_iter.item)
+        end
+end
+
+# An tierator that filter its element by a predicate `pred`.
+class FilterIter[E]
+        super FunIter[E,nullable E]
+        var pred: Fun1[E, Bool]
+
+        redef init
+        do
+                if is_ok and not pred.call(my_iter.item) then next
+        end
+
+        redef fun item
+        do
+                assert is_ok
+                return my_iter.item
+        end
+
+        redef fun next
+        do
+                loop
+                        my_iter.next
+                        if not is_ok then
+                                break
+                        end
+                        var x = my_iter.item
+                        if pred.call(x) then
+                                break
+                        end
+                end
+        end
+end
+
+# An iterator that maps each item to an iterator and yield
+# each item from it.
+class FlatMapIter[A,B]
+        super FunIter[A,B]
+        var f: Fun1[A, Iterator[B]]
+        protected var inner: nullable Iterator[B] = null
+
+        redef init
+        do
+                try_compute_inner
+        end
+
+        redef fun item
+        do
+                return inner.as(not null).item
+        end
+
+        redef fun is_ok
+        do
+                return inner != null
+        end
+
+        redef fun next
+        do
+                inner.next
+                if not inner.is_ok then
+                        super
+                        try_compute_inner
+                end
+        end
+
+        # Tries to resolve the inner iterator.
+        # Assigns null to `inner` if it fails.
+        protected fun try_compute_inner
+        do
+                inner = null
+                if not my_iter.is_ok then return
+                var res = f.call(my_iter.item)
+                if res.is_ok then inner = res
+        end
+end
+
+# An iterator that yield each item in order
+class OrderedIter[E]
+        super FunIter[E,E]
+        var f: Fun1[E, Comparable]
+
+        private var sorted_iter: Iterator[E] is noinit
+        private var sorted_arr: Array[E] is noinit
+
+        redef init
+        do
+                sorted_arr = my_iter.to_a
+                sorted_arr.sort_with(f)
+                sorted_iter = sorted_arr.iterator
+        end
+
+        redef fun next
+        do
+                sorted_iter.next
+        end
+
+        redef fun item
+        do
+                return sorted_iter.item
+        end
+
+        redef fun is_ok
+        do
+                return sorted_iter.is_ok
+        end
+
+        redef fun finish
+        do
+                sorted_iter.finish
+        end
+
+        redef fun to_a
+        do
+                return sorted_arr
+        end
+end
+
+# Comparator that use a function provided by the user to compare between elements.
+class ComparatorWith[E]
+        super Comparator
+        redef type COMPARED: E
+
+        var f: Fun1[E, Comparable]
+
+        redef fun compare(a,b)
+        do
+                var x = f.call(a)
+                var y = f.call(b)
+                if x < y then return -1
+                if x > y then return 1
+                return 0
+        end
+end
diff --git a/lib/functional/package.ini b/lib/functional/package.ini
new file mode 100644 (file)
index 0000000..b1e2311
--- /dev/null
@@ -0,0 +1,12 @@
+[package]
+name=functional
+tags=functional,types
+maintainer=Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+license=Apache-2.0
+desc=Functional type hierarchies and Stream-like API
+[upstream]
+browse=https://github.com/nitlang/nit/tree/master/lib/functional/
+git=https://github.com/nitlang/nit.git
+git.directory=lib/functional/
+homepage=http://nitlanguage.org
+issues=https://github.com/nitlang/nit/issues
diff --git a/lib/functional/test_iter_extras.nit b/lib/functional/test_iter_extras.nit
new file mode 100644 (file)
index 0000000..c60b896
--- /dev/null
@@ -0,0 +1,258 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2019 Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/license/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_iter_extras is test
+
+import iter_extras
+private import test_utils
+
+redef class Ref[E]
+        redef fun ==(other) do
+                if other isa Ref[E] then
+                        return self.item == other.item
+                end
+                return false
+        end
+end
+
+# test cases using `iter_extras::Iterator::map`
+class TestMapIter
+        test
+
+        # test case for an empty `Array` of `Int`
+        fun add_one_on_empty_array is test do
+                var xs = new Array[Int]
+                var actual = xs.iterator.map(add_one).to_a
+                assert actual.is_empty
+        end
+
+        # test case for an `Array` containing one `Int`
+        fun add_one_on_singleton_array is test do
+                var xs = [1]
+                var actual = xs.iterator.map(add_one).to_a
+                assert actual[0] == 2
+        end
+
+        # test case for `Range`, adding one to each elements (1 to 10)
+        fun add_one_on_range_1_to_10 is test do
+                var xs = [1..10]
+                var actual = xs.iterator.map(add_one).to_a
+                var expected = [2,3,4,5,6,7,8,9,10,11]
+                assert actual == expected
+        end
+
+        # test multiple application of map of an `Array[String]`.
+        fun snake_and_upper_strings is test do
+                var cs = ["helloWorld", "worldHello", "testCase"]
+                var actual = cs.iterator.map(snake_case_fn).map(upper_fn).to_a
+                var expected = ["HELLO_WORLD", "WORLD_HELLO", "TEST_CASE"]
+                assert actual == expected
+        end
+end
+
+# test cases using `iter_extras::Iterator::for_each`
+class TestForEach
+        test
+
+        fun add_one_to_all is test do
+                var xs = new Array[Ref[Int]]
+                var expected = new Array[Ref[Int]]
+                for i in [1..10] do
+                        var r1 = new Ref[Int](i)
+                        var r2 = new Ref[Int](i+1)
+                        xs.push(r1)
+                        expected.push(r2)
+                end
+                xs.iterator.for_each(add_one_proc)
+                assert xs == expected
+        end
+
+        fun for_each_empty_array is test do
+                var xs = new Array[Ref[Int]]
+                xs.iterator.for_each(add_one_proc)
+                assert xs.is_empty
+        end
+
+        fun for_each_on_singleton_array is test do
+                var r1 = new Ref[Int](1)
+                var r2 = new Ref[Int](2)
+                var xs = [r1]
+                xs.iterator.for_each(add_one_proc)
+                assert r1 == r2
+                assert xs == [r2]
+        end
+end
+
+# test cases using `iter_extras::Iterator::filter`
+class TestFilterIter
+        test
+
+        # test case for an empty `Array`
+        fun filter_empty_array is test  do
+                var xs = new Array[Int]
+                var lt10 = lower_than_fn(10)
+                var actual = xs.iterator.filter(lt10).to_a
+                assert actual.is_empty
+        end
+
+        # test case for a `Range` whose elements doesn't match the predicate
+        fun filter_nomatch is test do
+                var xs = [1..10]
+                var lt0 = lower_than_fn(0)
+                var actual = xs.iterator.filter(lt0).to_a
+                assert actual.is_empty
+        end
+
+        # test case for a `Range` whose elements match 50% of a given predicate
+        fun filter_half_match_on_range_1_to_10 is test do
+                var xs = [1..10]
+                var lt6 = lower_than_fn(6)
+                var actual = xs.iterator.filter(lt6).to_a
+                var expected = [1,2,3,4,5]
+                assert actual == expected
+        end
+
+        # test case for an `Array` whose last element is the only matching element
+        # for a given predicate
+        fun only_last_element_is_a_letter is test do
+                var xs = "123a"
+                var actual = xs.iterator.filter(is_letter_fn).to_a.join
+                assert actual == "a"
+        end
+
+        # test case for a `String` containing mixed alphanumeric characters
+        fun only_letters is test do
+                var cs = "aaa123b4bb3333c1c32c"
+                assert cs.iterator.filter(is_letter_fn).to_a.join == "aaabbbccc"
+        end
+
+        # test case for a `String` containing only one letter in the middle
+        fun has_any_letter_true is test do
+                var cs = "12345a12345"
+                assert cs.iterator.any(is_letter_fn)
+        end
+
+        # test case for an empty `String` that should not contain any letter
+        fun empty_string_has_no_letter is test do
+                var cs = ""
+                assert not cs.iterator.any(is_letter_fn)
+        end
+
+        # test case for a `String` representing a number, should not have any letter
+        fun numeric_string_has_no_letter is test do
+                var cs = "123456"
+                assert not cs.iterator.any(is_letter_fn)
+        end
+end
+
+# test cases using `iter_extras::Iterator::flat_map`
+class TestFlatMapIter
+        test
+
+        # test case for combining three `String`
+        fun combine_aaa_bbb_ccc_to_aaabbbccc is test do
+                var cs = ["aaa","bbb","ccc"]
+                assert cs.iterator.flat_map(chars_fn).to_a.join == "aaabbbccc"
+        end
+
+        fun combine_empty_strings is test do
+                var cs = ["", ""]
+                assert cs.iterator.flat_map(chars_fn).to_a.join == ""
+        end
+
+        fun flat_map_over_empty_array is test do
+                var cs = new Array[String]
+                assert cs.iterator.flat_map(chars_fn).to_a.join == ""
+        end
+end
+
+# test cases using `iter_extras::Iterator::fold`
+class TestFoldIter
+        test
+
+        fun sum_an_empty_array is test do
+                var xs = new Array[Int]
+                var actual = xs.iterator.fold(0, sum_fn)
+                assert actual == 0
+        end
+
+        fun sum_1_to_10 is test do
+                var xs = [1..10]
+                var actual = xs.iterator.fold(0, sum_fn)
+                assert actual == 55
+        end
+
+        fun fold_one_element is test do
+                var xs = [1]
+                var actual = xs.iterator.fold(0, sum_fn)
+                assert actual == xs[0]
+        end
+end
+
+# test cases using `iter_extras::Iterator::fold1`
+class TestFold1Iter
+        test
+
+        fun find_min_in_mixed_array is test do
+                var xs = [45,424,11,43,7,5,8,9,1,-100]
+                var actual = xs.iterator.fold1(min_int_fn)
+                assert actual == -100
+        end
+
+        fun fold1_with_2_elements is test do
+                var xs = [0,-100]
+                var actual = xs.iterator.fold1(min_int_fn)
+                assert actual == -100
+        end
+end
+
+# test cases using `iter_extras::Iterator::order_by`
+class TestOrderedIter
+        test
+
+        fun order_empty_list_of_numbers is test do
+                var xs = new Array[Int]
+                var actual = xs.iterator.order_by(id_int).to_a
+                assert actual == xs
+        end
+
+        fun order_list_of_ints is test do
+                var xs = [5,4,3,2,1]
+                var actual = xs.iterator.order_by(id_int).to_a
+                var expected = [1,2,3,4,5]
+                assert actual == expected
+        end
+
+        fun order_singleton_list_of_ints is test do
+                var xs = [1]
+                var actual = xs.iterator.order_by(id_int).to_a
+                assert actual == xs
+        end
+
+        fun order_list_of_strings_by_alphabetical_order is test do
+                var xs = ["louis", "florian", "alexis", "jean", "alexandre"]
+                var actual = xs.iterator.order_by(id_str).to_a
+                var expected = ["alexandre", "alexis", "florian", "jean", "louis"]
+                assert actual == expected
+        end
+
+        fun order_list_of_strings_by_length is test do
+                var xs = ["louis", "florian", "alexis", "jean", "alexandre"]
+                var actual = xs.iterator.order_by(str_len).to_a
+                var expected = ["jean", "louis", "alexis", "florian", "alexandre"]
+                assert actual == expected
+        end
+end
diff --git a/lib/functional/test_utils.nit b/lib/functional/test_utils.nit
new file mode 100644 (file)
index 0000000..ee11557
--- /dev/null
@@ -0,0 +1,197 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2019 Louis-Vincent Boudreault <lv.boudreault95@gmail.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This module contains util classes and methods for `test_iter_extras`.
+import functional_types
+
+class SumFn
+        super Fun2[Int,Int,Int]
+
+        redef fun call(x, y)
+        do
+                return x + y
+        end
+end
+
+class MinFn[E: Comparable]
+        super Fun2[E,E,E]
+
+        redef fun call(x, y)
+        do
+                if x < y then
+                        return x
+                end
+                return y
+        end
+end
+
+class InitArrayFn[E]
+        super Fun0[Array[E]]
+
+        var initial_val: nullable E
+
+        redef fun call
+        do
+                var xs = new Array[E]
+                if initial_val != null then
+                        xs.push(initial_val)
+                end
+                return xs
+        end
+end
+
+class SnakeCaseFn
+        super Fun1[String,String]
+
+        redef fun call(x)
+        do
+                return x.to_snake_case
+        end
+end
+
+class UpperCaseFn
+        super Fun1[String, String]
+
+        redef fun call(x)
+        do
+                return x.to_upper
+        end
+end
+
+class IsLetterFn
+        super Fun1[Char, Bool]
+
+        redef fun call(c)
+        do
+                return c.is_letter
+        end
+end
+
+class AddOneFn
+        super Fun1[Int,Int]
+
+        redef fun call(x)
+        do
+                return x + 1
+        end
+end
+
+class CharsFn
+        super Fun1[String, Iterator[Char]]
+
+        redef fun call(str)
+        do
+                return str.chars.iterator
+        end
+end
+
+class LowerThanFn
+        super Fun1[Int, Bool]
+        var target: Int
+        redef fun call(x)
+        do
+                return x < target
+        end
+end
+
+class IdFn[E]
+        super Fun1[E,E]
+        redef fun call(x)
+        do
+                return x
+        end
+end
+
+class StrLenFn
+        super Fun1[String,Int]
+        redef fun call(x)
+        do
+                return x.length
+        end
+end
+
+class AddOneProc
+        super Proc1[Ref[Int]]
+        redef fun call(x)
+        do
+                x.item += 1
+        end
+end
+
+fun sum_fn: SumFn
+do
+        return new SumFn
+end
+
+fun min_int_fn: MinFn[Int]
+do
+        return new MinFn[Int]
+end
+
+fun new_int_arr(x: nullable Int): InitArrayFn[Int]
+do
+        return new InitArrayFn[Int](x)
+end
+
+fun snake_case_fn: SnakeCaseFn
+do
+        return new SnakeCaseFn
+end
+
+fun upper_fn: UpperCaseFn
+do
+        return new UpperCaseFn
+end
+
+fun is_letter_fn: IsLetterFn
+do
+        return new IsLetterFn
+end
+
+fun add_one: AddOneFn
+do
+        return new AddOneFn
+end
+
+fun add_one_proc: AddOneProc
+do
+        return new AddOneProc
+end
+
+fun chars_fn: CharsFn
+do
+        return new CharsFn
+end
+
+fun lower_than_fn(x: Int): LowerThanFn
+do
+        return new LowerThanFn(x)
+end
+
+fun id_int: IdFn[Int]
+do
+        return new IdFn[Int]
+end
+
+fun id_str: IdFn[String]
+do
+        return new IdFn[String]
+end
+
+fun str_len: StrLenFn
+do
+        return new StrLenFn
+end
index 4eb9a97..bd01519 100644 (file)
 # For most use-cases you need to use the `GithubAPI` client.
 module api
 
-import github_curl
 intrude import json::serialization_read
 
+import base64
+import curl
+import json
+
 # Client to Github API
 #
 # To access the API you need an instance of a `GithubAPI` client.
@@ -38,11 +41,11 @@ intrude import json::serialization_read
 # The API client allows you to get Github API entities.
 #
 # ~~~nitish
-# var repo = api.load_repo("nitlang/nit")
+# var repo = api.get_repo("nitlang/nit")
 # assert repo != null
 # assert repo.name == "nit"
 #
-# var user = api.load_user("Morriar")
+# var user = api.get_user("Morriar")
 # assert user != null
 # assert user.login == "Morriar"
 # ~~~
@@ -60,79 +63,80 @@ class GithubAPI
        #
        # Be aware that there is [rate limits](https://developer.github.com/v3/rate_limit/)
        # associated to the key.
-       var auth: String
-
-       # Github API base url.
-       #
-       # Default is `https://api.github.com` and should not be changed.
-       var api_url = "https://api.github.com"
+       var auth: nullable String = null is optional
 
        # User agent used for HTTP requests.
        #
        # Default is `nit_github_api`.
        #
        # See <https://developer.github.com/v3/#user-agent-required>
-       var user_agent = "nit_github_api"
+       var user_agent: String = "nit_github_api" is optional
+
+       # Headers to use on all requests
+       fun new_headers: HeaderMap do
+               var map = new HeaderMap
+               var auth = self.auth
+               if auth != null then
+                       map["Authorization"] = "token {auth}"
+               end
+               map["User-Agent"] = user_agent
+               # FIXME remove when projects and team are no more in beta
+               map["Accept"] = "application/vnd.github.inertia-preview+json"
+               map["Accept"] = "application/vnd.github.hellcat-preview+json"
+               return map
+       end
 
-       # Curl instance.
+       # Github API base url.
        #
-       # Internal Curl instance used to perform API calls.
-       private var ghcurl: GithubCurl is noinit
+       # Default is `https://api.github.com` and should not be changed.
+       var api_url = "https://api.github.com"
 
-       # Verbosity level.
-       #
-       # * `0`: only errors (default)
-       # * `1`: verbose
-       var verbose_lvl = 0 is public writable
+       # Send a HTTPRequest to the Github API
+       fun send(method, path: String, headers: nullable HeaderMap, body: nullable String): nullable String do
+               last_error = null
+               path = sanitize_uri(path)
+               var uri = "{api_url}{path}"
+               var request = new CurlHTTPRequest(uri)
+               request.method = method
+               request.user_agent = user_agent
+               request.headers = headers or else self.new_headers
+               request.body = body
+               return check_response(uri, request.execute)
+       end
 
-       init do
-               ghcurl = new GithubCurl(auth, user_agent)
+       private fun check_response(uri: String, response: CurlResponse): nullable String do
+               if response isa CurlResponseSuccess then
+                       was_error = false
+                       return response.body_str
+               else if response isa CurlResponseFailed then
+                       last_error = new GithubAPIError(
+                               response.error_msg,
+                               response.error_code,
+                               uri
+                       )
+                       was_error = true
+                       return null
+               else abort
        end
 
        # Deserialize an object
-       fun deserialize(string: String): nullable Object do
-               var deserializer = new GithubDeserializer(string)
+       fun deserialize(string: nullable Serializable): nullable Object do
+               if string == null then return null
+               var deserializer = new GithubDeserializer(string.to_s)
                var res = deserializer.deserialize
-               # print deserializer.errors.join("\n") # DEBUG
-               return res
-       end
-
-       # Execute a GET request on Github API.
-       #
-       # This method returns raw json data.
-       # See other `load_*` methods to use more expressive types.
-       #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var obj = api.get("/repos/nitlang/nit")
-       #     assert obj isa JsonObject
-       #     assert obj["name"] == "nit"
-       #
-       # Returns `null` in case of `error`.
-       #
-       #     obj = api.get("/foo/bar/baz")
-       #     assert obj == null
-       #     assert api.was_error
-       #     var err = api.last_error
-       #     assert err isa GithubError
-       #     assert err.name == "GithubAPIError"
-       #     assert err.message == "Not Found"
-       fun get(path: String): nullable Serializable do
-               path = sanitize_uri(path)
-               var res = ghcurl.get_and_parse("{api_url}{path}")
-               if res isa Error then
-                       last_error = res
+               if deserializer.errors.not_empty then
                        was_error = true
+                       last_error = new GithubDeserializerErrors("Deserialization failed", deserializer.errors)
+                       return null
+               else if res isa GithubError then
+                       was_error = true
+                       last_error = res
                        return null
                end
                was_error = false
                return res
        end
 
-       # Display a message depending on `verbose_lvl`.
-       fun message(lvl: Int, message: String) do
-               if lvl <= verbose_lvl then print message
-       end
-
        # Escape `uri` in an acceptable format for Github.
        private fun sanitize_uri(uri: String): String do
                # TODO better URI escape.
@@ -145,13 +149,29 @@ class GithubAPI
        # Does the last request provoqued an error?
        var was_error = false is protected writable
 
-       # Load the json object from Github.
-       # See `GithubEntity::load_from_github`.
-       protected fun load_from_github(key: String): nullable GithubEntity do
-               message(1, "Get {key} (github)")
-               var res = get(key)
-               if was_error then return null
-               return deserialize(res.as(JsonObject).to_json).as(nullable GithubEntity)
+       # Execute a GET request on Github API.
+       #
+       # This method returns a deserialized result.
+       #
+       # For raw data see `send`.
+       #
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var obj = api.get("/repos/nitlang/nit")
+       # assert obj isa Repo
+       # assert obj.name == "nit"
+       # ~~~
+       #
+       # Returns `null` in case of `error`.
+       #
+       # ~~~nitish
+       # obj = api.get("/foo/bar/baz")
+       # assert obj == null
+       # assert api.was_error
+       # assert api.last_error isa GithubError
+       # ~~~
+       fun get(path: String, headers: nullable HeaderMap, data: nullable String): nullable Object do
+               return deserialize(send("GET", path, headers, data))
        end
 
        # Get the Github logged user from `auth` token.
@@ -160,64 +180,56 @@ class GithubAPI
        #
        # ~~~nitish
        # var api = new GithubAPI(get_github_oauth)
-       # var user = api.load_auth_user
+       # var user = api.get_auth_user
        # assert user.login == "Morriar"
        # ~~~
-       fun load_auth_user: nullable User do
-               var user = load_from_github("/user")
-               if was_error then return null
-               return user.as(nullable User)
+       fun get_auth_user: nullable User do
+               return get("/user").as(nullable User)
        end
 
        # Get the Github user with `login`
        #
        # Loads the `User` from the API or returns `null` if the user cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var user = api.load_user("Morriar")
-       #     print user or else "null"
-       #     assert user.login == "Morriar"
-       fun load_user(login: String): nullable User do
-               return load_from_github("/users/{login}").as(nullable User)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var user = api.get_user("Morriar")
+       # print user or else "null"
+       # assert user.login == "Morriar"
+       # ~~~
+       fun get_user(login: String): nullable User do
+               return get("/users/{login}").as(nullable User)
        end
 
        # Get the Github repo with `full_name`.
        #
        # Loads the `Repo` from the API or returns `null` if the repo cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo.name == "nit"
-       #     assert repo.owner.login == "nitlang"
-       #     assert repo.default_branch == "master"
-       fun load_repo(full_name: String): nullable Repo do
-               return load_from_github("/repos/{full_name}").as(nullable Repo)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo.name == "nit"
+       # assert repo.owner.login == "nitlang"
+       # assert repo.default_branch == "master"
+       # ~~~
+       fun get_repo(repo_slug: String): nullable Repo do
+               return get("/repos/{repo_slug}").as(nullable Repo)
        end
 
-       # List of branches associated with their names.
-       fun load_repo_branches(repo: Repo): Array[Branch] do
-               message(1, "Get branches for {repo.full_name}")
-               var array = get("/repos/{repo.full_name}/branches")
-               var res = new Array[Branch]
-               if not array isa JsonArray then return res
-               var deser = deserialize(array.to_json)
-               if deser isa Array[Object] then return res # empty array
-               return deser.as(Array[Branch])
+       # List of repo branches.
+       #
+       # Pagination:
+       #       * `page`: page to fetch (default: 1)
+       #       * `per_page`: number of branches by page (default: 30)
+       fun get_repo_branches(repo_slug: String, page, per_page: nullable Int): Array[Branch] do
+               return new GithubArray[Branch].from(get(
+                       "/repos/{repo_slug}/branches?{pagination(page, per_page)}"))
        end
 
        # List of issues associated with their ids.
-       fun load_repo_issues(repo: Repo): Array[Issue] do
-               message(1, "Get issues for {repo.full_name}")
-               var res = new Array[Issue]
-               var issue = load_repo_last_issue(repo)
-               if issue == null then return res
-               res.add issue
-               while issue != null and issue.number > 1 do
-                       issue = load_issue(repo, issue.number - 1)
-                       if issue == null then continue
-                       res.add issue
-               end
-               return res
+       fun get_repo_issues(repo_slug: String, page, per_page: nullable Int): Array[Issue] do
+               return new GithubArray[Issue].from(get(
+                       "/repos/{repo_slug}/issues?{pagination(page, per_page)}"))
        end
 
        # Search issues in this repo form an advanced query.
@@ -229,39 +241,20 @@ class GithubAPI
        # ~~~
        #
        # See <https://developer.github.com/v3/search/#search-issues>.
-       fun search_repo_issues(repo: Repo, query: String): Array[Issue] do
-               query = "/search/issues?q={query} repo:{repo.full_name}"
-               var res = new Array[Issue]
-               var response = get(query)
-               if was_error then return res
-               var arr = response.as(JsonObject)["items"].as(JsonArray)
-               return deserialize(arr.to_json).as(Array[Issue])
-       end
-
-       # Get the last published issue.
-       fun load_repo_last_issue(repo: Repo): nullable Issue do
-               var array = get("/repos/{repo.full_name}/issues")
-               if not array isa JsonArray then return null
-               if array.is_empty then return null
-               var obj = array.first
-               if not obj isa JsonObject then return null
-               return deserialize(obj.to_json).as(nullable Issue)
+       fun search_repo_issues(repo_slug: String, query: String, page, per_page: nullable Int): nullable SearchResults do
+               return get("/search/issues?q={query} repo:{repo_slug}&{pagination(page, per_page)}").as(nullable SearchResults)
        end
 
        # List of labels associated with their names.
-       fun load_repo_labels(repo: Repo): Array[Label] do
-               message(1, "Get labels for {repo.full_name}")
-               var array = get("repos/{repo.full_name}/labels")
-               if not array isa JsonArray then return new Array[Label]
-               return deserialize(array.to_json).as(Array[Label])
+       fun get_repo_labels(repo_slug: String, page, per_page: nullable Int): Array[Label] do
+               return new GithubArray[Label].from(get(
+                       "/repos/{repo_slug}/labels?{pagination(page, per_page)}"))
        end
 
        # List of milestones associated with their ids.
-       fun load_repo_milestones(repo: Repo): Array[Milestone] do
-               message(1, "Get milestones for {repo.full_name}")
-               var array = get("/repos/{repo.full_name}/milestones")
-               if not array isa JsonArray then return new Array[Milestone]
-               return deserialize(array.to_json).as(Array[Milestone])
+       fun get_repo_milestones(repo_slug: String, page, per_page: nullable Int): Array[Milestone] do
+               return new GithubArray[Milestone].from(get(
+                       "/repos/{repo_slug}/milestones?{pagination(page, per_page)}"))
        end
 
        # List of pull-requests associated with their ids.
@@ -269,256 +262,247 @@ class GithubAPI
        # Implementation notes: because PR numbers are not consecutive,
        # PR are loaded from pages.
        # See: https://developer.github.com/v3/pulls/#list-pull-requests
-       fun load_repo_pulls(repo: Repo): Array[PullRequest] do
-               message(1, "Get pulls for {repo.full_name}")
-               var key = "/repos/{repo.full_name}"
-               var res = new Array[PullRequest]
-               var page = 1
-               loop
-                       var array = get("{key}/pulls?page={page}").as(JsonArray)
-                       if array.is_empty then break
-                       for obj in array do
-                               if not obj isa JsonObject then continue
-                               var pr = deserialize(array.to_json).as(nullable PullRequest)
-                               if pr == null then continue
-                               res.add pr
-                       end
-                       page += 1
-               end
-               return res
+       fun get_repo_pulls(repo_slug: String, page, per_page: nullable Int): Array[PullRequest] do
+               return new GithubArray[PullRequest].from(get(
+                       "/repos/{repo_slug}/pulls?{pagination(page, per_page)}"))
        end
 
        # List of contributor related statistics.
-       fun load_repo_contrib_stats(repo: Repo): Array[ContributorStats] do
-               message(1, "Get contributor stats for {repo.full_name}")
-               var res = new Array[ContributorStats]
-               var array = get("/repos/{repo.full_name}/stats/contributors")
-               if not array isa JsonArray then return res
-               return deserialize(array.to_json).as(Array[ContributorStats])
+       fun get_repo_contrib_stats(repo_slug: String): Array[ContributorStats] do
+               return new GithubArray[ContributorStats].from(get("/repos/{repo_slug}/stats/contributors"))
        end
 
        # Get the Github branch with `name`.
        #
        # Returns `null` if the branch cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var branch = api.load_branch(repo, "master")
-       #     assert branch.name == "master"
-       #     assert branch.commit isa Commit
-       fun load_branch(repo: Repo, name: String): nullable Branch do
-               return load_from_github("/repos/{repo.full_name}/branches/{name}").as(nullable Branch)
-       end
-
-       # List all commits in `self`.
-       #
-       # This can be long depending on the branch size.
-       # Commit are returned in an unspecified order.
-       fun load_branch_commits(branch: Branch): Array[Commit] do
-               var res = new Array[Commit]
-               var done = new HashSet[String]
-               var todos = new Array[Commit]
-               todos.add branch.commit
-               loop
-                       if todos.is_empty then break
-                       var commit = todos.pop
-                       if done.has(commit.sha) then continue
-                       done.add commit.sha
-                       res.add commit
-                       var parents = commit.parents
-                       if parents == null then continue
-                       for parent in parents do
-                               todos.add parent
-                       end
-               end
-               return res
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var branch = api.get_branch(repo, "master")
+       # assert branch.name == "master"
+       # assert branch.commit isa Commit
+       # ~~~
+       fun get_branch(repo_slug: String, name: String): nullable Branch do
+               return get("/repos/{repo_slug}/branches/{name}").as(nullable Branch)
        end
 
        # Get the Github commit with `sha`.
        #
        # Returns `null` if the commit cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var commit = api.load_commit(repo, "64ce1f")
-       #     assert commit isa Commit
-       fun load_commit(repo: Repo, sha: String): nullable Commit do
-               return load_from_github("/repos/{repo.full_name}/commits/{sha}").as(nullable Commit)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var commit = api.get_commit(repo, "64ce1f")
+       # assert commit isa Commit
+       # ~~~
+       fun get_commit(repo_slug: String, sha: String): nullable Commit do
+               return get("/repos/{repo_slug}/commits/{sha}").as(nullable Commit)
+       end
+
+       # Get the status of a commit
+       #
+       # The status holds the result of each check ran on a commit like CI, reviews etc.
+       fun get_commit_status(repo_slug: String, sha: String): nullable CommitStatus do
+               return get("/repos/{repo_slug}/commits/{sha}/status").as(nullable CommitStatus)
        end
 
        # Get the Github issue #`number`.
        #
        # Returns `null` if the issue cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var issue = api.load_issue(repo, 1)
-       #     assert issue.title == "Doc"
-       fun load_issue(repo: Repo, number: Int): nullable Issue do
-               return load_from_github("/repos/{repo.full_name}/issues/{number}").as(nullable Issue)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var issue = api.get_issue(repo, 1)
+       # assert issue.title == "Doc"
+       # ~~~
+       fun get_issue(repo_slug: String, number: Int): nullable Issue do
+               return get("/repos/{repo_slug}/issues/{number}").as(nullable Issue)
        end
 
        # List of event on this issue.
-       fun load_issue_comments(repo: Repo, issue: Issue): Array[IssueComment] do
-               var res = new Array[IssueComment]
-               var count = issue.comments or else 0
-               var page = 1
-               loop
-                       var array = get("/repos/{repo.full_name}/issues/{issue.number}/comments?page={page}")
-                       if not array isa JsonArray then break
-                       if array.is_empty then break
-                       for obj in array do
-                               if not obj isa JsonObject then continue
-                               var id = obj["id"].as(Int)
-                               var comment = load_issue_comment(repo, id)
-                               if comment == null then continue
-                               res.add(comment)
-                       end
-                       if res.length >= count then break
-                       page += 1
-               end
-               return res
+       fun get_issue_comments(repo_slug: String, issue_number: Int, page, per_page: nullable Int): Array[IssueComment] do
+               return new GithubArray[IssueComment].from(get(
+                       "/repos/{repo_slug}/issues/{issue_number}/comments?{pagination(page, per_page)}"))
        end
 
        # List of events on this issue.
-       fun load_issue_events(repo: Repo, issue: Issue): Array[IssueEvent] do
-               var res = new Array[IssueEvent]
-               var key = "/repos/{repo.full_name}/issues/{issue.number}"
-               var page = 1
-               loop
-                       var array = get("{key}/events?page={page}")
-                       if not array isa JsonArray or array.is_empty then break
-                       for obj in array do
-                               if not obj isa JsonObject then continue
-                               var event = deserialize(obj.to_json).as(nullable IssueEvent)
-                               if event == null then continue
-                               res.add event
-                       end
-                       page += 1
-               end
-               return res
+       fun get_issue_events(repo_slug: String, issue_number: Int, page, per_page: nullable Int): Array[IssueEvent] do
+               return new GithubArray[IssueEvent].from(get(
+                       "/repos/{repo_slug}/issues/{issue_number}/events?{pagination(page, per_page)}"))
        end
 
        # Get the Github pull request #`number`.
        #
        # Returns `null` if the pull request cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var pull = api.load_pull(repo, 1)
-       #     assert pull.title == "Doc"
-       #     assert pull.user.login == "Morriar"
-       fun load_pull(repo: Repo, number: Int): nullable PullRequest do
-               return load_from_github("/repos/{repo.full_name}/pulls/{number}").as(nullable PullRequest)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var pull = api.get_pull(repo, 1)
+       # assert pull.title == "Doc"
+       # assert pull.user.login == "Morriar"
+       # ~~~
+       fun get_pull(repo_slug: String, number: Int): nullable PullRequest do
+               return get("/repos/{repo_slug}/pulls/{number}").as(nullable PullRequest)
+       end
+
+       # List of comments on a pull request
+       fun get_pull_comments(repo_slug: String, pull_number: Int, page, per_page: nullable Int): Array[PullComment] do
+               return new GithubArray[PullComment].from(get(
+                       "/repos/{repo_slug}/pulls/{pull_number}/comments?{pagination(page, per_page)}"))
+       end
+
+       # Get a specific pull request comment
+       fun get_pull_comment(repo_slug: String, id: Int): nullable PullComment do
+               return get("/repos/{repo_slug}/pulls/comments/{id}").as(nullable PullComment)
        end
 
        # Get the Github label with `name`.
        #
        # Returns `null` if the label cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var labl = api.load_label(repo, "ok_will_merge")
-       #     assert labl != null
-       fun load_label(repo: Repo, name: String): nullable Label do
-               return load_from_github("/repos/{repo.full_name}/labels/{name}").as(nullable Label)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var labl = api.get_label(repo, "ok_will_merge")
+       # assert labl != null
+       # ~~~
+       fun get_label(repo_slug: String, name: String): nullable Label do
+               return get("/repos/{repo_slug}/labels/{name}").as(nullable Label)
        end
 
        # Get the Github milestone with `id`.
        #
        # Returns `null` if the milestone cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var stone = api.load_milestone(repo, 4)
-       #     assert stone.title == "v1.0prealpha"
-       fun load_milestone(repo: Repo, id: Int): nullable Milestone do
-               return load_from_github("/repos/{repo.full_name}/milestones/{id}").as(nullable Milestone)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var stone = api.get_milestone(repo, 4)
+       # assert stone.title == "v1.0prealpha"
+       # ~~~
+       fun get_milestone(repo_slug: String, id: Int): nullable Milestone do
+               return get("/repos/{repo_slug}/milestones/{id}").as(nullable Milestone)
        end
 
        # Get the Github issue event with `id`.
        #
        # Returns `null` if the event cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo isa Repo
-       #     var event = api.load_issue_event(repo, 199674194)
-       #     assert event isa IssueEvent
-       #     assert event.actor.login == "privat"
-       #     assert event.event == "labeled"
-       #     assert event.labl isa Label
-       #     assert event.labl.name == "need_review"
-       fun load_issue_event(repo: Repo, id: Int): nullable IssueEvent do
-               return load_from_github("/repos/{repo.full_name}/issues/events/{id}").as(nullable IssueEvent)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo isa Repo
+       # var event = api.get_issue_event(repo, 199674194)
+       # assert event isa IssueEvent
+       # assert event.actor.login == "privat"
+       # assert event.event == "labeled"
+       # assert event.labl isa Label
+       # assert event.labl.name == "need_review"
+       # ~~~
+       fun get_issue_event(repo_slug: String, id: Int): nullable IssueEvent do
+               return get("/repos/{repo_slug}/issues/events/{id}").as(nullable IssueEvent)
        end
 
        # Get the Github commit comment with `id`.
        #
        # Returns `null` if the comment cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var comment = api.load_commit_comment(repo, 8982707)
-       #     assert comment.user.login == "Morriar"
-       #     assert comment.body == "For testing purposes...\n"
-       #     assert comment.commit_id == "7eacb86d1e24b7e72bc9ac869bf7182c0300ceca"
-       fun load_commit_comment(repo: Repo, id: Int): nullable CommitComment do
-               return load_from_github("/repos/{repo.full_name}/comments/{id}").as(nullable CommitComment)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var comment = api.get_commit_comment(repo, 8982707)
+       # assert comment.user.login == "Morriar"
+       # assert comment.body == "For testing purposes...\n"
+       # assert comment.commit_id == "7eacb86d1e24b7e72bc9ac869bf7182c0300ceca"
+       # ~~~
+       fun get_commit_comment(repo_slug: String, id: Int): nullable CommitComment do
+               return get("/repos/{repo_slug}/comments/{id}").as(nullable CommitComment)
        end
 
        # Get the Github issue comment with `id`.
        #
        # Returns `null` if the comment cannot be found.
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var comment = api.load_issue_comment(repo, 6020149)
-       #     assert comment.user.login == "privat"
-       #     assert comment.created_at.to_s == "2012-05-30T20:16:54Z"
-       #     assert comment.issue_number == 10
-       fun load_issue_comment(repo: Repo, id: Int): nullable IssueComment do
-               return load_from_github("/repos/{repo.full_name}/issues/comments/{id}").as(nullable IssueComment)
+       # ~~~nitish
+       # var api = new GithubAPI(get_github_oauth)
+       # var repo = api.get_repo("nitlang/nit")
+       # assert repo != null
+       # var comment = api.get_issue_comment(repo, 6020149)
+       # assert comment.user.login == "privat"
+       # assert comment.created_at.to_s == "2012-05-30T20:16:54Z"
+       # assert comment.issue_number == 10
+       # ~~~
+       fun get_issue_comment(repo_slug: String, id: Int): nullable IssueComment do
+               return get("/repos/{repo_slug}/issues/comments/{id}").as(nullable IssueComment)
        end
 
-       # Get the Github diff comment with `id`.
-       #
-       # Returns `null` if the comment cannot be found.
+       private fun pagination(page, per_page: nullable Int): String do
+               return "page={page or else 1}&per_page={per_page or else 30}"
+       end
+end
+
+# Return deserialization as an array of E
+#
+# Non-subtypes will be ignored.
+private class GithubArray[E]
+       super Array[E]
+
+       # Create `self` from an Array of objects
        #
-       #     var api = new GithubAPI(get_github_oauth)
-       #     var repo = api.load_repo("nitlang/nit")
-       #     assert repo != null
-       #     var comment = api.load_review_comment(repo, 21010363)
-       #     assert comment.path == "src/modelize/modelize_property.nit"
-       #     assert comment.original_position == 26
-       #     assert comment.pull_number == 945
-       fun load_review_comment(repo: Repo, id: Int): nullable ReviewComment do
-               return load_from_github("/repos/{repo.full_name}/pulls/comments/{id}").as(nullable ReviewComment)
+       # Objects non-subtyping E will be ignored.
+       init from(res: nullable Object) do
+               if not res isa Array[Object] then return
+               for obj in res do
+                       if obj isa E then add obj
+               end
        end
 end
 
-# Something returned by the Github API.
+# An Error returned by GithubAPI
+class GithubError
+       super Error
+end
+
+# An Error returned by https://api.github.com
 #
-# Mainly a Nit wrapper around a JSON objet.
-abstract class GithubEntity
-       serialize
+# Anything that can occurs when sending request to the API:
+# * Can't connect to API
+# * Ressource not found
+# * Validation error
+# * ...
+class GithubAPIError
+       super GithubError
+
+       # Status code obtained
+       var status_code: Int
+
+       # URI that returned the error
+       var requested_uri: String
+end
+
+# An Error returned while deserializing objects from the API
+class GithubDeserializerErrors
+       super GithubError
 
-       # Github page url.
-       var html_url: nullable String is writable
+       # Errors returned by the deserizalization process
+       var deserizalization_errors: Array[Error]
 end
 
 # A Github user
 #
 # Provides access to [Github user data](https://developer.github.com/v3/users/).
-# Should be accessed from `GithubAPI::load_user`.
+# Should be accessed from `GithubAPI::get_user`.
 class User
        super GitUser
        serialize
@@ -542,9 +526,8 @@ end
 # A Github repository.
 #
 # Provides access to [Github repo data](https://developer.github.com/v3/repos/).
-# Should be accessed from `GithubAPI::load_repo`.
+# Should be accessed from `GithubAPI::get_repo`.
 class Repo
-       super GithubEntity
        serialize
 
        # Repo full name on Github.
@@ -557,16 +540,15 @@ class Repo
        var owner: User is writable
 
        # Repo default branch name.
-       var default_branch: String is writable
+       var default_branch: nullable String = null is optional, writable
 end
 
 # A Github branch.
 #
-# Should be accessed from `GithubAPI::load_branch`.
+# Should be accessed from `GithubAPI::get_branch`.
 #
 # See <https://developer.github.com/v3/repos/#list-branches>.
 class Branch
-       super GithubEntity
        serialize
 
        # Branch name.
@@ -578,11 +560,10 @@ end
 
 # A Github commit.
 #
-# Should be accessed from `GithubAPI::load_commit`.
+# Should be accessed from `GithubAPI::get_commit`.
 #
 # See <https://developer.github.com/v3/repos/commits/>.
 class Commit
-       super GithubEntity
        serialize
 
        # Commit SHA.
@@ -600,23 +581,9 @@ class Commit
        # Authoring date as String.
        var author_date: nullable String is writable
 
-       # Authoring date as ISODate.
-       fun iso_author_date: nullable ISODate do
-               var author_date = self.author_date
-               if author_date == null then return null
-               return new ISODate.from_string(author_date)
-       end
-
        # Commit date as String.
        var commit_date: nullable String is writable
 
-       # Commit date as ISODate.
-       fun iso_commit_date: nullable ISODate do
-               var commit_date = self.commit_date
-               if commit_date == null then return null
-               return new ISODate.from_string(commit_date)
-       end
-
        # List files staged in this commit.
        var files: nullable Array[GithubFile] = null is optional, writable
 
@@ -629,7 +596,6 @@ end
 
 # A Git Commit representation
 class GitCommit
-       super GithubEntity
        serialize
 
        # Commit SHA.
@@ -650,27 +616,18 @@ end
 
 # Git user authoring data
 class GitUser
-       super GithubEntity
        serialize
 
        # Authoring date.
        var date: nullable String = null is writable
-
-       # Authoring date as ISODate.
-       fun iso_date: nullable ISODate do
-               var date = self.date
-               if date == null then return null
-               return new ISODate.from_string(date)
-       end
 end
 
 # A Github issue.
 #
-# Should be accessed from `GithubAPI::load_issue`.
+# Should be accessed from `GithubAPI::get_issue`.
 #
 # See <https://developer.github.com/v3/issues/>.
 class Issue
-       super GithubEntity
        serialize
 
        # Issue Github ID.
@@ -706,31 +663,12 @@ class Issue
        # Creation time as String.
        var created_at: String is writable
 
-       # Creation time as ISODate.
-       fun iso_created_at: ISODate do
-               return new ISODate.from_string(created_at)
-       end
-
        # Last update time as String (if any).
        var updated_at: nullable String is writable
 
-       # Last update date as ISODate.
-       fun iso_updated_at: nullable ISODate do
-               var updated_at = self.updated_at
-               if updated_at == null then return null
-               return new ISODate.from_string(updated_at)
-       end
-
        # Close time as String (if any).
        var closed_at: nullable String is writable
 
-       # Close time as ISODate.
-       fun iso_closed_at: nullable ISODate do
-               var closed_at = self.closed_at
-               if closed_at == null then return null
-               return new ISODate.from_string(closed_at)
-       end
-
        # Full description of the issue.
        var body: nullable String is writable
 
@@ -743,7 +681,7 @@ end
 
 # A Github pull request.
 #
-# Should be accessed from `GithubAPI::load_pull`.
+# Should be accessed from `GithubAPI::get_pull`.
 #
 # PullRequest are basically Issues with more data.
 # See <https://developer.github.com/v3/pulls/>.
@@ -754,18 +692,11 @@ class PullRequest
        # Merge time as String (if any).
        var merged_at: nullable String is writable
 
-       # Merge time as ISODate.
-       fun iso_merged_at: nullable ISODate do
-               var merged_at = self.merged_at
-               if merged_at == null then return null
-               return new ISODate.from_string(merged_at)
-       end
-
        # Merge commit SHA.
        var merge_commit_sha: nullable String is writable
 
        # Count of comments made on the pull request diff.
-       var review_comments: Int is writable
+       var review_comments: nullable Int is writable
 
        # Pull request head (can be a commit SHA or a branch name).
        var head: PullRef is writable
@@ -774,7 +705,7 @@ class PullRequest
        var base: PullRef is writable
 
        # Is this pull request merged?
-       var merged: Bool is writable
+       var merged: nullable Bool is writable
 
        # Is this pull request mergeable?
        var mergeable: nullable Bool is writable
@@ -782,22 +713,22 @@ class PullRequest
        # Mergeable state of this pull request.
        #
        # See <https://developer.github.com/v3/pulls/#list-pull-requests>.
-       var mergeable_state: String is writable
+       var mergeable_state: nullable String is writable
 
        # User that merged this pull request (if any).
        var merged_by: nullable User is writable
 
        # Count of commits in this pull request.
-       var commits: Int is writable
+       var commits: nullable Int is writable
 
        # Added line count.
-       var additions: Int is writable
+       var additions: nullable Int is writable
 
        # Deleted line count.
-       var deletions: Int is writable
+       var deletions: nullable Int is writable
 
        # Changed files count.
-       var changed_files: Int is writable
+       var changed_files: nullable Int is writable
 
        # URL to patch file
        var patch_url: nullable String is writable
@@ -827,11 +758,10 @@ end
 
 # A Github label.
 #
-# Should be accessed from `GithubAPI::load_label`.
+# Should be accessed from `GithubAPI::get_label`.
 #
 # See <https://developer.github.com/v3/issues/labels/>.
 class Label
-       super GithubEntity
        serialize
 
        # Label name.
@@ -843,11 +773,10 @@ end
 
 # A Github milestone.
 #
-# Should be accessed from `GithubAPI::load_milestone`.
+# Should be accessed from `GithubAPI::get_milestone`.
 #
 # See <https://developer.github.com/v3/issues/milestones/>.
 class Milestone
-       super GithubEntity
        serialize
 
        # The milestone id on Github.
@@ -871,45 +800,17 @@ class Milestone
        # Creation time as String.
        var created_at: nullable String is writable
 
-       # Creation time as ISODate.
-       fun iso_created_at: nullable ISODate do
-               var created_at = self.created_at
-               if created_at == null then return null
-               return new ISODate.from_string(created_at)
-       end
-
        # User that created this milestone.
        var creator: nullable User is writable
 
        # Due time as String (if any).
        var due_on: nullable String is writable
 
-       # Due time in ISODate format (if any).
-       fun iso_due_on: nullable ISODate do
-               var due_on = self.due_on
-               if due_on == null then return null
-               return new ISODate.from_string(due_on)
-       end
-
        # Last update time as String (if any).
        var updated_at: nullable String is writable
 
-       # Last update date as ISODate.
-       fun iso_updated_at: nullable ISODate do
-               var updated_at = self.updated_at
-               if updated_at == null then return null
-               return new ISODate.from_string(updated_at)
-       end
-
        # Close time as String (if any).
        var closed_at: nullable String is writable
-
-       # Close time as ISODate.
-       fun iso_closed_at: nullable ISODate do
-               var closed_at = self.closed_at
-               if closed_at == null then return null
-               return new ISODate.from_string(closed_at)
-       end
 end
 
 # A Github comment
@@ -918,9 +819,8 @@ end
 #
 # * `CommitComment` are made on a commit page.
 # * `IssueComment` are made on an issue or pull request page.
-# * `ReviewComment` are made on the diff associated to a pull request.
+# * `PullComment` are made on the diff associated to a pull request.
 abstract class Comment
-       super GithubEntity
        serialize
 
        # Identifier of this comment.
@@ -932,21 +832,9 @@ abstract class Comment
        # Creation time as String.
        var created_at: String is writable
 
-       # Creation time as ISODate.
-       fun iso_created_at: nullable ISODate do
-               return new ISODate.from_string(created_at)
-       end
-
        # Last update time as String (if any).
        var updated_at: nullable String is writable
 
-       # Last update date as ISODate.
-       fun iso_updated_at: nullable ISODate do
-               var updated_at = self.updated_at
-               if updated_at == null then return null
-               return new ISODate.from_string(updated_at)
-       end
-
        # Comment body text.
        var body: String is writable
 
@@ -974,9 +862,58 @@ class CommitComment
        var path: nullable String is writable
 end
 
+# Status of a commit
+#
+# Can contain sub-status for reviews, CI etc.
+class CommitStatus
+       serialize
+
+       # Global state of this commit
+       var state: nullable String = null is optional, writable
+
+       # Sha of the commit this status is for
+       var sha: nullable String = null is optional, writable
+
+       # Repository the commit belongs to
+       var repository: nullable Repo = null is optional, writable
+
+       # All sub statuses (one for each check)
+       var statuses = new Array[RepoStatus] is optional, writable
+
+       # Total count of sub statuses
+       var total_count: nullable Int = null is optional, writable
+end
+
+# Sub status of a CommitStatus
+#
+# Represents a check applied to a commit (reviews, CI, ...).
+class RepoStatus
+       serialize
+
+       # State of this check
+       var state: nullable String = null is optional, writable
+
+       # Description of this check
+       var description: nullable String = null is optional, writable
+
+       # External URL
+       var target_url: nullable String = null is optional, writable
+
+       # Context this status is related to
+       #
+       # Used to hold the name of the check applied.
+       var context: nullable String = null is optional, writable
+
+       # Date when this status was created
+       var created_at: nullable String = null is optional, writable
+
+       # Last date this status was updated
+       var updated_at: nullable String = null is optional, writable
+end
+
 # Comments made on Github issue and pull request pages.
 #
-# Should be accessed from `GithubAPI::load_issue_comment`.
+# Should be accessed from `GithubAPI::get_issue_comment`.
 #
 # See <https://developer.github.com/v3/issues/comments/>.
 class IssueComment
@@ -992,10 +929,10 @@ end
 
 # Comments made on Github pull request diffs.
 #
-# Should be accessed from `GithubAPI::load_diff_comment`.
+# Should be accessed from `GithubAPI::get_diff_comment`.
 #
 # See <https://developer.github.com/v3/pulls/comments/>.
-class ReviewComment
+class PullComment
        super Comment
        serialize
 
@@ -1026,11 +963,10 @@ end
 
 # An event that occurs on a Github `Issue`.
 #
-# Should be accessed from `GithubAPI::load_issue_event`.
+# Should be accessed from `GithubAPI::get_issue_event`.
 #
 # See <https://developer.github.com/v3/issues/events/>.
 class IssueEvent
-       super GithubEntity
        serialize
 
        # Event id on Github.
@@ -1042,11 +978,6 @@ class IssueEvent
        # Creation time as String.
        var created_at: String is writable
 
-       # Creation time as ISODate.
-       fun iso_created_at: nullable ISODate do
-               return new ISODate.from_string(created_at)
-       end
-
        # Event descriptor.
        var event: String is writable
 
@@ -1087,22 +1018,36 @@ class ContributorStats
 
        redef type OTHER: ContributorStats
 
-       # Github API client.
-       var api: GithubAPI is writable
-
        # User these statistics are about.
        var author: User is writable
 
        # Total number of commit.
        var total: Int is writable
 
-       # Are of weeks of activity with detailed statistics.
-       var weeks: JsonArray is writable
+       # Array of weeks of activity with detailed statistics.
+       var weeks: Array[ContributorWeek] is writable
 
        # ContributorStats can be compared on the total amount of commits.
        redef fun <(o) do return total < o.total
 end
 
+# Contributor stats weekly hash
+class ContributorWeek
+       serialize
+
+       # Start of week given a Unix timestamp
+       var w: Int
+
+       # Number of additions
+       var a: Int
+
+       # Number of deletions
+       var d: Int
+
+       # Number of commits
+       var c: Int
+end
+
 # A Github file representation.
 #
 # Mostly a wrapper around a json object.
@@ -1113,46 +1058,72 @@ class GithubFile
        var filename: String is writable
 end
 
-# Make ISO Datew serilizable
-redef class ISODate
+# A list of results returned buy `/search`
+class SearchResults
        serialize
+
+       # Total count with other pages
+       var total_count: Int
+
+       # Does this page contain all the results?
+       var incomplete_results: Bool
+
+       # Results in this page
+       var items: Array[Object]
 end
 
 # JsonDeserializer specific for Github objects.
 class GithubDeserializer
        super JsonDeserializer
 
-       redef fun class_name_heuristic(json_object) do
-               if json_object.has_key("login") then
-                       return "User"
-               else if json_object.has_key("full_name") then
-                       return "Repo"
-               else if json_object.has_key("name") and json_object.has_key("commit") then
+       private var pattern_base = "https://api.github.com"
+
+       # Url patterns to class names
+       var url_patterns: Map[Regex, String] is lazy do
+               var map = new HashMap[Regex, String]
+               map["{pattern_base}/users/[^/]*$".to_re] = "User"
+               map["{pattern_base}/repos/[^/]*/[^/]*$".to_re] = "Repo"
+               map["{pattern_base}/repos/[^/]*/[^/]*/labels/[^/]+$".to_re] = "Label"
+               map["{pattern_base}/repos/[^/]*/[^/]*/milestones/[0-9]+$".to_re] = "Milestone"
+               map["{pattern_base}/repos/[^/]*/[^/]*/issues/[0-9]+$".to_re] = "Issue"
+               map["{pattern_base}/repos/[^/]*/[^/]*/issues/comments/[0-9]+$".to_re] = "IssueComment"
+               map["{pattern_base}/repos/[^/]*/[^/]*/issues/events/[0-9]+$".to_re] = "IssueEvent"
+               map["{pattern_base}/repos/[^/]*/[^/]*/pulls/[0-9]+$".to_re] = "PullRequest"
+               map["{pattern_base}/repos/[^/]*/[^/]*/pulls/comments/[0-9]+$".to_re] = "PullComment"
+               map["{pattern_base}/repos/[^/]*/[^/]*/comments/[0-9]+$".to_re] = "CommitComment"
+               map["{pattern_base}/repos/[^/]*/[^/]*/commits/[a-f0-9]+$".to_re] = "Commit"
+               map["{pattern_base}/repos/[^/]*/[^/]*/commits/[a-f0-9]+/status$".to_re] = "CommitStatus"
+               map["{pattern_base}/repos/[^/]*/[^/]*/statuses/[a-f0-9]+$".to_re] = "RepoStatus"
+               return map
+       end
+
+       # Match `url` property in object to a class name
+       fun url_heuristic(raw: Map[String, nullable Object]): nullable String do
+               if not raw.has_key("url") then return null
+
+               var url = raw["url"].as(String)
+               for re, class_name in url_patterns do
+                       if url.has(re) then return class_name
+               end
+               return null
+       end
+
+       redef fun class_name_heuristic(raw) do
+               # Try with url
+               var class_name = url_heuristic(raw)
+               if class_name != null then return class_name
+
+               # print raw.serialize_to_json(true, true) # debug
+
+               # Use properties heuristics
+               if raw.has_key("name") and raw.has_key("commit") then
                        return "Branch"
-               else if json_object.has_key("sha") and json_object.has_key("ref") then
-                       return "PullRef"
-               else if (json_object.has_key("sha") and json_object.has_key("commit")) or (json_object.has_key("id") and json_object.has_key("tree_id")) then
-                       return "Commit"
-               else if json_object.has_key("sha") and json_object.has_key("tree") then
-                       return "GitCommit"
-               else if json_object.has_key("name") and json_object.has_key("date") then
-                       return "GitUser"
-               else if json_object.has_key("number") and json_object.has_key("patch_url") then
-                       return "PullRequest"
-               else if json_object.has_key("open_issues") and json_object.has_key("closed_issues") then
-                       return "Milestone"
-               else if json_object.has_key("number") and json_object.has_key("title") then
-                       return "Issue"
-               else if json_object.has_key("color") then
-                       return "Label"
-               else if json_object.has_key("event") then
-                       return "IssueEvent"
-               else if json_object.has_key("original_commit_id") then
-                       return "ReviewComment"
-               else if json_object.has_key("commit_id") then
-                       return "CommitComment"
-               else if json_object.has_key("issue_url") then
-                       return "IssueComment"
+               else if raw.has_key("total_count") and raw.has_key("items") then
+                       return "SearchResults"
+               else if raw.has_key("total") and raw.has_key("weeks") then
+                       return "ContributorStats"
+               else if raw.has_key("a") and raw.has_key("d") and raw.has_key("c") then
+                       return "ContributorWeek"
                end
                return null
        end
@@ -1173,3 +1144,16 @@ class GithubDeserializer
                return super
        end
 end
+
+# Gets the Github token from `git` configuration
+#
+# Return the value of `git config --get github.oauthtoken`
+# or `""` if no key exists.
+fun get_github_oauth: String
+do
+       var p = new ProcessReader("git", "config", "--get", "github.oauthtoken")
+       var token = p.read_line
+       p.wait
+       p.close
+       return token.trim
+end
index 466e4a9..dbb4ad0 100644 (file)
@@ -28,9 +28,9 @@
 #
 # var name = "nitlang/nit"
 # assert not api.has_cache(name)
-# var repo = api.load_repo(name) # load from GitHub
+# var repo = api.get_repo(name) # load from GitHub
 # #assert api.has_cache(name) FIXME bring back this assert
-# repo = api.load_repo(name) # load from cache
+# repo = api.get_repo(name) # load from cache
 #
 # api.clear_cache
 # assert not api.has_cache(name)
@@ -55,23 +55,23 @@ redef class GithubAPI
        fun clear_cache do store.clear
 
        # If no cache data is found for `key` then json is loaded from Github API.
-       redef fun load_from_github(key) do
+       redef fun get(key, headers, data) do
                if not enable_cache then return super
                if store.has_key(key) then
-                       message(1, "Get {key} (cache)")
+                       # print "Get {key} (cache)" # debug
                        was_error = false
-                       return deserialize(store.load_object(key).to_json).as(nullable GithubEntity)
+                       return deserialize(store.load_object(key).to_json)
                end
                var obj = super
-               if not was_error then
-                       cache(key, obj.as(not null))
+               if not was_error and obj isa Serializable then
+                       cache(key, obj)
                end
                return obj
        end
 
        # Save `json` data in cache under `key`.
-       private fun cache(key: String, obj: GithubEntity) do
-               message(2, "Cache key {key}")
+       private fun cache(key: String, obj: Serializable) do
+               # print "Cache key {key}" # debug
                store.store_object(key, obj.to_json.parse_json.as(JsonObject))
        end
 
index f2f398a..952ee62 100644 (file)
@@ -185,12 +185,12 @@ class PullRequestEvent
 end
 
 # Triggered when a comment is created on a pull request diff.
-class PullRequestReviewCommentEvent
+class PullRequestPullCommentEvent
        super GithubEvent
        serialize
 
        # The `Comment` itself.
-       var comment: ReviewComment is writable
+       var comment: PullComment is writable
 
        # `PullRequest` the `comment` belongs to.
        var pull: PullRequest is writable
@@ -268,7 +268,7 @@ redef class GithubDeserializer
                else if json_object.has_key("action") and json_object.has_key("number") then
                        return "PullRequestEvent"
                else if json_object.has_key("action") and json_object.has_key("pull") and json_object.has_key("comment") then
-                       return "PullRequestReviewCommentEvent"
+                       return "PullRequestPullCommentEvent"
                else if json_object.has_key("head_commit") and json_object.has_key("commits") then
                        return "PushEvent"
                else if json_object.has_key("action") and json_object.has_key("branches") then
diff --git a/lib/github/github_curl.nit b/lib/github/github_curl.nit
deleted file mode 100644 (file)
index 6f28546..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Curl extention to access the Github API
-# See https://developer.github.com/v3/ for details
-module github_curl
-
-import curl
-import json::static
-import json
-
-# Specific Curl that know hot to talk to the github API
-class GithubCurl
-
-       # Headers to use on all requests
-       var header: HeaderMap is noinit
-
-       # OAuth token
-       #
-       # Use an empty string to disable authentication and connect
-       # anonymously (thus less capabilities and more rate limits)
-       var auth: String
-
-       # User agent (is used by github to contact devs in case of problems)
-       # Eg. "Awesome-Octocat-App"
-       var user_agent: String
-
-       init do
-               header = new HeaderMap
-               if auth != "" then header["Authorization"] = "token {auth}"
-       end
-
-       # Get the requested URI, and check the HTTP response. Then convert to JSON
-       # and check for Github errors.
-       fun get_and_check(uri: String): nullable Serializable
-       do
-               var request = new CurlHTTPRequest(uri)
-               request.user_agent = user_agent
-               request.headers = header
-               var response = request.execute
-
-               if response isa CurlResponseSuccess then
-                       var obj = response.body_str.parse_json
-                       if obj isa JsonObject then
-                               if obj.keys.has("message") and obj.keys.has("documentation_url") then
-                                       print "Message from Github API: {obj["message"] or else ""}"
-                                       print "Requested URI: {uri}"
-                                       abort
-                               end
-                       end
-                       return obj
-
-               else if response isa CurlResponseFailed then
-                       print "Request to Github API failed"
-                       print "Requested URI: {uri}"
-                       print "Error code: {response.error_code}"
-                       print "Error msg: {response.error_msg}"
-                       abort
-               else abort
-       end
-
-       # Get the requested URI, and check the HTTP response.
-       # Then convert to JSON and check for Github errors.
-       # Unlike `get_and_check`, error do not trigger an abort but
-       # are reported as `GithubError`.
-       fun get_and_parse(uri: String): nullable Serializable
-       do
-               var request = new CurlHTTPRequest(uri)
-               request.user_agent = user_agent
-               request.headers = header
-               var response = request.execute
-               if response isa CurlResponseSuccess then
-                       var obj = response.body_str.parse_json
-                       if obj isa JsonObject then
-                               if obj.keys.has("message") and obj.keys.has("documentation_url") then
-                                       var title = "GithubAPIError"
-                                       var msg = obj["message"].as(not null).to_s
-                                       var err = new GithubError(msg, title)
-                                       err.json["requested_uri"] = uri
-                                       err.json["status_code"] = response.status_code
-                                       return err
-                               end
-                       end
-                       return obj
-
-               else if response isa CurlResponseFailed then
-                       var title = "CurlResponseFailed"
-                       var msg = "Request to Github API failed"
-                       var err = new GithubError(msg, title)
-                       err.json["requested_uri"] = uri
-                       err.json["error_code"] = response.error_code
-                       err.json["response"] = response.error_msg
-                       return err
-               else abort
-       end
-
-end
-
-# An error thrown by the Github API.
-#
-# Depending on the kind of error, additionnal informations can be stored in
-# the error object.
-# Check the `json` value to find them.
-class GithubError
-       super Error
-       super Serializable
-
-       # The name of the error.
-       var name: String
-
-       # The json content of the error.
-       var json = new JsonObject
-
-       redef init do
-               super
-               json["error"] = name.to_json
-               json["message"] = message.to_json
-       end
-
-       redef fun serialize_to(v) do json.serialize_to v
-
-       redef fun to_s do return "[{name}] {super}"
-end
-
-# Gets the Github token from `git` configuration
-#
-# Return the value of `git config --get github.oauthtoken`
-# or `""` if no key exists.
-fun get_github_oauth: String
-do
-       var p = new ProcessReader("git", "config", "--get", "github.oauthtoken")
-       var token = p.read_line
-       p.wait
-       p.close
-       return token.trim
-end
index 70f16c2..945359f 100644 (file)
@@ -88,36 +88,35 @@ abstract class HookListener
        end
 
        # How to build events from received json objects.
-       fun event_factory(kind: String, json: JsonObject): GithubEvent do
+       fun event_factory(kind: String, json: String): nullable GithubEvent do
                if kind == "commit_comment" then
-                       return api.deserialize(json.to_json).as(CommitCommentEvent)
+                       return api.deserialize(json).as(CommitCommentEvent)
                else if kind == "create" then
-                       return api.deserialize(json.to_json).as(CreateEvent)
+                       return api.deserialize(json).as(CreateEvent)
                else if kind == "delete" then
-                       return api.deserialize(json.to_json).as(DeleteEvent)
+                       return api.deserialize(json).as(DeleteEvent)
                else if kind == "deployment" then
-                       return api.deserialize(json.to_json).as(DeploymentEvent)
+                       return api.deserialize(json).as(DeploymentEvent)
                else if kind == "deployment_status" then
-                       return api.deserialize(json.to_json).as(DeploymentStatusEvent)
+                       return api.deserialize(json).as(DeploymentStatusEvent)
                else if kind == "fork" then
-                       return api.deserialize(json.to_json).as(ForkEvent)
+                       return api.deserialize(json).as(ForkEvent)
                else if kind == "issues" then
-                       return api.deserialize(json.to_json).as(IssuesEvent)
+                       return api.deserialize(json).as(IssuesEvent)
                else if kind == "issue_comment" then
-                       return api.deserialize(json.to_json).as(IssueCommentEvent)
+                       return api.deserialize(json).as(IssueCommentEvent)
                else if kind == "member" then
-                       return api.deserialize(json.to_json).as(MemberEvent)
+                       return api.deserialize(json).as(MemberEvent)
                else if kind == "pull_request" then
-                       return api.deserialize(json.to_json).as(PullRequestEvent)
+                       return api.deserialize(json).as(PullRequestEvent)
                else if kind == "pull_request_review_comment" then
-                       return api.deserialize(json.to_json).as(PullRequestReviewCommentEvent)
+                       return api.deserialize(json).as(PullRequestPullCommentEvent)
                else if kind == "push" then
-                       return api.deserialize(json.to_json).as(PushEvent)
+                       return api.deserialize(json).as(PushEvent)
                else if kind == "status" then
-                       return api.deserialize(json.to_json).as(StatusEvent)
-               else
-                       return api.deserialize(json.to_json).as(GithubEvent)
+                       return api.deserialize(json).as(StatusEvent)
                end
+               return null
        end
 
        # What to do when we receive an event from a hook?
@@ -139,11 +138,9 @@ private class HookAction
                # get event type
                var kind = request.header.get_or_null("X-GitHub-Event")
                if kind == null then return new HttpResponse(403)
-               # get POST object
-               var obj = request.body.parse_json
-               if not obj isa JsonObject then return new HttpResponse(403)
                # parse event
-               var event = listener.event_factory(kind, obj)
+               var event = listener.event_factory(kind, request.body)
+               if event == null then return new HttpResponse(403)
                listener.apply_event(event)
                return new HttpResponse(200)
        end
index 4ffa501..fe8e0bc 100644 (file)
@@ -104,19 +104,23 @@ class LoaderConfig
 
        # Github tokens used to access data.
        var tokens: Array[String] is lazy do
-               var arr = opt_tokens.value
-               if arr.is_empty then
-                       var iarr = ini.at("tokens")
-                       if iarr != null then arr = iarr.values.to_a
+               var opt_tokens = self.opt_tokens.value
+               if opt_tokens.not_empty then return opt_tokens
+
+               var res = new Array[String]
+               var ini_tokens = ini.section("tokens")
+               if ini_tokens == null then return res
+
+               for token in ini_tokens.values do
+                       if token == null then continue
+                       res.add token
                end
-               return arr or else new Array[String]
+               return res
        end
 
        # Github tokens wallet\13
        var wallet: GithubWallet is lazy do
-               var wallet = new GithubWallet.from_tokens(tokens)
-               wallet.no_colors = no_colors
-               return wallet
+               return new GithubWallet(tokens)
        end
 
        # Use colors in console display
@@ -128,15 +132,19 @@ class LoaderConfig
        # Verbosity level (the higher the more verbose)
        fun verbose_level: Int do
                var opt = opt_start.value
-               if opt > 0 then return opt
+               if opt > 0 then
+                       return info_level
+               end
                var v = ini["loader.verbose"]
-               if v != null then return v.to_i
-               return 4
+               if v != null and v.to_i > 0 then
+                       return info_level
+               end
+               return warn_level
        end
 
        # Logger used to print things
-       var logger: ConsoleLog is lazy do
-               var logger = new ConsoleLog
+       var logger: PopLogger is lazy do
+               var logger = new PopLogger
                logger.level = verbose_level
                return logger
        end
@@ -226,32 +234,32 @@ class Loader
                return new IssueEventRepo(config.db.collection("issue_events"))
        end
 
-       fun start(repo_full_name: String) do
-               var job = jobs.find_by_id(repo_full_name)
+       fun start(repo_slug: String) do
+               var job = jobs.find_by_id(repo_slug)
                if job == null then
-                       log.info "Creating new job for `{repo_full_name}`"
-                       job = add_job(repo_full_name)
+                       log.info "Creating new job for `{repo_slug}`"
+                       job = add_job(repo_slug)
                else
-                       log.info "Resuming pending job for `{repo_full_name}`"
+                       log.info "Resuming pending job for `{repo_slug}`"
                end
                print "Load history for {job}..."
-               load_branches(job)
-               load_issues(job)
+               get_branches(job)
+               get_issues(job)
                finish_job(job)
        end
 
-       fun remove(repo_full_name: String) do
-               var job = jobs.find_by_id(repo_full_name)
+       fun remove(repo_slug: String) do
+               var job = jobs.find_by_id(repo_slug)
                if job == null then
-                       log.info "No job found for `{repo_full_name}`"
+                       log.info "No job found for `{repo_slug}`"
                else
-                       jobs.remove_by_id(repo_full_name)
-                       log.info "Deleted job for `{repo_full_name}`"
+                       jobs.remove_by_id(repo_slug)
+                       log.info "Deleted job for `{repo_slug}`"
                end
        end
 
        # Show wallet status
-       fun show_wallet do config.wallet.show_status
+       fun show_wallet do config.wallet.show_status(config.no_colors)
 
        # Show jobs status
        fun show_jobs do
@@ -264,10 +272,10 @@ class Loader
        end
 
        # Add a new job
-       fun add_job(repo_full_name: String): LoaderJob do
-               var repo = config.wallet.api.load_repo(repo_full_name)
+       fun add_job(repo_slug: String): LoaderJob do
+               var repo = config.wallet.api.get_repo(repo_slug)
                assert repo != null else
-                       error "Repository `{repo_full_name}` not found"
+                       error "Repository `{repo_slug}` not found"
                end
                repos.save repo
                var job = new LoaderJob(repo, config.start_from_issue)
@@ -281,27 +289,27 @@ class Loader
                jobs.remove_by_id(job.id)
        end
 
-       fun load_branches(job: LoaderJob) do
+       fun get_branches(job: LoaderJob) do
                if config.no_branches then return
 
                var api = config.wallet.api
                var repo = job.repo
-               for branch in api.load_repo_branches(repo) do
+               for branch in api.get_repo_branches(repo.full_name) do
                        branch.repo = repo
                        branches.save branch
-                       load_commits(job, branch)
+                       get_commits(job, branch)
                end
        end
 
-       fun load_commits(job: LoaderJob, branch: Branch) do
+       fun get_commits(job: LoaderJob, branch: Branch) do
                if config.no_commits then return
-               load_commit(job, branch.commit.sha)
+               get_commit(job, branch.commit.sha)
        end
 
-       fun load_commit(job: LoaderJob, commit_sha: String) do
+       fun get_commit(job: LoaderJob, commit_sha: String) do
                if commits.find_by_id(commit_sha) != null then return
                var api = config.wallet.api
-               var commit = api.load_commit(job.repo, commit_sha)
+               var commit = api.get_commit(job.repo.full_name, commit_sha)
                # print commit or else "NULL"
                if commit == null then return
                var message = commit.message or else "no message"
@@ -311,93 +319,87 @@ class Loader
                var parents = commit.parents
                if parents == null then return
                for parent in parents do
-                       load_commit(job, parent.sha)
+                       get_commit(job, parent.sha)
                end
        end
 
        # Load game for `repo_name`.
-       fun load_issues(job: LoaderJob) do
+       fun get_issues(job: LoaderJob) do
                if config.no_issues then return
 
-               var i = job.last_issue
-               var last_issue = load_last_issue(job)
-               if last_issue != null then
-                       while i <= last_issue.number do
-                               load_issue(job, i)
-                               job.last_issue = i
+               var api = config.wallet.api
+               var page = 1
+               var issues = api.get_repo_issues(job.repo.full_name, page, 100)
+               while issues.not_empty do
+                       for issue in issues do
+                               get_issue(job, issue.number)
+                               job.last_issue = issue.number
                                jobs.save job
-                               i += 1
                        end
                end
        end
 
-       # Load the `repo` last issue or abort.
-       private fun load_last_issue(job: LoaderJob): nullable Issue do
-               var api = config.wallet.api
-               return api.load_repo_last_issue(job.repo)
-       end
-
        # Load an issue or abort.
-       private fun load_issue(job: LoaderJob, issue_number: Int) do
+       private fun get_issue(job: LoaderJob, issue_number: Int) do
                if issues.find_by_id("{job.repo.mongo_id}/{issue_number}") != null then return
 
                var api = config.wallet.api
-               var issue = api.load_issue(job.repo, issue_number)
+               var issue = api.get_issue(job.repo.full_name, issue_number)
                assert issue != null else
                        check_error(api, "Issue #{issue_number} not found")
                end
                if issue.is_pull_request then
-                       load_pull(job, issue)
+                       get_pull(job, issue)
                else
                        log.info "Load issue #{issue.number}: {issue.title.split("\n").first}"
                        issue.repo = job.repo
                        issues.save issue
-                       load_issue_events(job, issue)
+                       get_issue_events(job, issue)
                end
-               load_issue_comments(job, issue)
+               get_issue_comments(job, issue)
        end
 
        # Load issue comments.
-       private fun load_issue_comments(job: LoaderJob, issue: Issue) do
+       private fun get_issue_comments(job: LoaderJob, issue: Issue) do
                if config.no_comments then return
                var api = config.wallet.api
-               for comment in api.load_issue_comments(job.repo, issue) do
+               for comment in api.get_issue_comments(job.repo.full_name, issue.number) do
                        comment.repo = job.repo
                        issue_comments.save comment
                end
        end
 
        # Load issue events.
-       private fun load_issue_events(job: LoaderJob, issue: Issue) do
+       private fun get_issue_events(job: LoaderJob, issue: Issue) do
                if config.no_events then return
 
                var api = config.wallet.api
-               for event in api.load_issue_events(job.repo, issue) do
+               for event in api.get_issue_events(job.repo.full_name, issue.number) do
                        event.repo = job.repo
                        issue_events.save event
                end
        end
 
        # Load a pull request or abort.
-       private fun load_pull(job: LoaderJob, issue: Issue): PullRequest do
+       private fun get_pull(job: LoaderJob, issue: Issue): PullRequest do
                var api = config.wallet.api
-               var pr = api.load_pull(job.repo, issue.number)
+               var pr = api.get_pull(job.repo.full_name, issue.number)
                assert pr != null else
                        check_error(api, "Pull request #{issue.number} not found")
                end
                log.info "Load pull request #{issue.number}: {pr.title.split("\n").first}"
                pr.repo = job.repo
                pulls.save pr
-               load_pull_events(job, pr)
+               get_pull_events(job, pr)
                return pr
        end
 
        # Load pull events.
-       private fun load_pull_events(job: LoaderJob, pull: PullRequest) do
+       private fun get_pull_events(job: LoaderJob, pull: PullRequest) do
                if config.no_events then return
 
                var api = config.wallet.api
-               for event in api.load_issue_events(job.repo, pull) do
+               for event in api.get_issue_events(job.repo.full_name, pull.number) do
                        event.repo = job.repo
                        issue_events.save event
                end
@@ -412,7 +414,7 @@ class Loader
        end
 
        # Logger shortcut
-       fun log: ConsoleLog do return config.logger
+       fun log: PopLogger do return config.logger
 
        # Display a error and exit
        fun error(msg: String) do
@@ -583,7 +585,7 @@ if loader.config.opt_clear.value then
 else
        loader.start args.first
 
-       var repo = loader.config.wallet.api.load_repo(args.first)
+       var repo = loader.config.wallet.api.get_repo(args.first)
        if repo == null then return
        print "Loaded"
        print "* {if loader.repos.find_by_id(args.first) != null then 1 else 0} repos"
diff --git a/lib/github/test_github_curl.nit b/lib/github/test_github_curl.nit
deleted file mode 100644 (file)
index 25ce970..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module test_github_curl is test
-
-import github::github_curl
-
-class TestGithubCurl
-       test
-
-       var auth: String = get_github_oauth
-       var user_agent: String = "nit"
-       var testee: GithubCurl is noinit
-
-       fun before_test is before do
-               testee = new GithubCurl(auth, user_agent)
-       end
-
-       fun test_get_repo is test do
-               var uri = "https://api.github.com/repos/nitlang/nit"
-               var res = testee.get_and_check(uri)
-
-               assert res isa JsonObject
-               assert res["name"] == "nit"
-               assert res["owner"] isa JsonObject
-       end
-
-       fun test_get_user is test do
-               var uri = "https://api.github.com/users/Morriar"
-               var res = testee.get_and_check(uri)
-
-               assert res isa JsonObject
-               assert res["login"] == "Morriar"
-               assert res["html_url"] == "https://github.com/Morriar"
-       end
-end
diff --git a/lib/github/tests/mock/errors_404.res b/lib/github/tests/mock/errors_404.res
new file mode 100644 (file)
index 0000000..e0a95cb
--- /dev/null
@@ -0,0 +1 @@
+{"message":"Not Found","documentation_url":"https://developer.github.com/v3"}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_branches_master.res b/lib/github/tests/mock/repo_branches_master.res
new file mode 100644 (file)
index 0000000..dcb088a
--- /dev/null
@@ -0,0 +1 @@
+{"name":"master","commit":{"sha":"9248f1c81c08b6c0ec7785678dbb1d7440b885d9","node_id":"MDY6Q29tbWl0MzI4NTk3OjkyNDhmMWM4MWMwOGI2YzBlYzc3ODU2NzhkYmIxZDc0NDBiODg1ZDk=","commit":{"author":{"name":"Jean Privat","email":"jean@pryen.org","date":"2019-06-13T14:14:24Z"},"committer":{"name":"Jean Privat","email":"jean@pryen.org","date":"2019-06-13T14:14:24Z"},"message":"Merge: Some more small improvements on gitlab-ci\n\nPull-Request: #2744","tree":{"sha":"1c40bdc143d18c628fb7939b8258fa65f6ada2e7","url":"https://api.github.com/repos/nitlang/nit/git/trees/1c40bdc143d18c628fb7939b8258fa65f6ada2e7"},"url":"https://api.github.com/repos/nitlang/nit/git/commits/9248f1c81c08b6c0ec7785678dbb1d7440b885d9","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null}},"url":"https://api.github.com/repos/nitlang/nit/commits/9248f1c81c08b6c0ec7785678dbb1d7440b885d9","html_url":"https://github.com/nitlang/nit/commit/9248f1c81c08b6c0ec7785678dbb1d7440b885d9","comments_url":"https://api.github.com/repos/nitlang/nit/commits/9248f1c81c08b6c0ec7785678dbb1d7440b885d9/comments","author":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"committer":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"parents":[{"sha":"afc737008b2b10b9317f0e528dedf27dcf9926ab","url":"https://api.github.com/repos/nitlang/nit/commits/afc737008b2b10b9317f0e528dedf27dcf9926ab","html_url":"https://github.com/nitlang/nit/commit/afc737008b2b10b9317f0e528dedf27dcf9926ab"},{"sha":"61e9c7897630bfe23a2bf6c2a02803c1fc8dd51d","url":"https://api.github.com/repos/nitlang/nit/commits/61e9c7897630bfe23a2bf6c2a02803c1fc8dd51d","html_url":"https://github.com/nitlang/nit/commit/61e9c7897630bfe23a2bf6c2a02803c1fc8dd51d"}]},"_links":{"self":"https://api.github.com/repos/nitlang/nit/branches/master","html":"https://github.com/nitlang/nit/tree/master"},"protected":true,"protection":{"enabled":true,"required_status_checks":{"enforcement_level":"non_admins","contexts":[]}},"protection_url":"https://api.github.com/repos/nitlang/nit/branches/master/protection"}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_branches_nit.res b/lib/github/tests/mock/repo_branches_nit.res
new file mode 100644 (file)
index 0000000..472b0dc
--- /dev/null
@@ -0,0 +1 @@
+[{"name":"master","commit":{"sha":"8fd264ae263d5418c56671414b9788c5d67621b4","url":"https://api.github.com/repos/nitlang/nit/commits/8fd264ae263d5418c56671414b9788c5d67621b4"},"protected":true},{"name":"next","commit":{"sha":"9248f1c81c08b6c0ec7785678dbb1d7440b885d9","url":"https://api.github.com/repos/nitlang/nit/commits/9248f1c81c08b6c0ec7785678dbb1d7440b885d9"},"protected":false}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_comments_8982707.res b/lib/github/tests/mock/repo_comments_8982707.res
new file mode 100644 (file)
index 0000000..e8ec2f0
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/comments/8982707","html_url":"https://github.com/nitlang/nit/commit/7eacb86d1e24b7e72bc9ac869bf7182c0300ceca#commitcomment-8982707","id":8982707,"node_id":"MDEzOkNvbW1pdENvbW1lbnQ4OTgyNzA3","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"position":null,"line":null,"path":null,"commit_id":"7eacb86d1e24b7e72bc9ac869bf7182c0300ceca","created_at":"2014-12-16T00:37:24Z","updated_at":"2014-12-16T00:37:24Z","author_association":"MEMBER","body":"For testing purposes...\n"}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_commits_4e3c68_status.res b/lib/github/tests/mock/repo_commits_4e3c68_status.res
new file mode 100644 (file)
index 0000000..2cac9da
--- /dev/null
@@ -0,0 +1 @@
+{"state":"failure","statuses":[{"url":"https://api.github.com/repos/nitlang/nit/statuses/4e3c688d2c4b875c00f206eb4c4b6f2c4f34c096","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","id":7133267167,"node_id":"MDEzOlN0YXR1c0NvbnRleHQ3MTMzMjY3MTY3","state":"failure","description":"Merged pipeline on gitlab: failed","target_url":"https://gitlab.com/nit/nit-ci/pipelines/69275842","context":"gitlab-ci","created_at":"2019-07-03T20:28:57Z","updated_at":"2019-07-03T20:28:57Z"}],"sha":"4e3c688d2c4b875c00f206eb4c4b6f2c4f34c096","total_count":1,"repository":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments"},"commit_url":"https://api.github.com/repos/nitlang/nit/commits/4e3c688d2c4b875c00f206eb4c4b6f2c4f34c096","url":"https://api.github.com/repos/nitlang/nit/commits/4e3c688d2c4b875c00f206eb4c4b6f2c4f34c096/status"}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_commits_64ce1f.res b/lib/github/tests/mock/repo_commits_64ce1f.res
new file mode 100644 (file)
index 0000000..e90dbfc
--- /dev/null
@@ -0,0 +1 @@
+{"sha":"64ce1f587209024f5de46d06c70526a569ff537f","node_id":"MDY6Q29tbWl0MzI4NTk3OjY0Y2UxZjU4NzIwOTAyNGY1ZGU0NmQwNmM3MDUyNmE1NjlmZjUzN2Y=","commit":{"author":{"name":"Jean Privat","email":"jean@pryen.org","date":"2014-12-03T15:16:13Z"},"committer":{"name":"Jean Privat","email":"jean@pryen.org","date":"2014-12-03T15:33:19Z"},"message":"lib/string: add `chomp`\n\nSigned-off-by: Jean Privat <jean@pryen.org>","tree":{"sha":"66ac4b2bd9247d98afbb5309db97dda06991ed77","url":"https://api.github.com/repos/nitlang/nit/git/trees/66ac4b2bd9247d98afbb5309db97dda06991ed77"},"url":"https://api.github.com/repos/nitlang/nit/git/commits/64ce1f587209024f5de46d06c70526a569ff537f","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null}},"url":"https://api.github.com/repos/nitlang/nit/commits/64ce1f587209024f5de46d06c70526a569ff537f","html_url":"https://github.com/nitlang/nit/commit/64ce1f587209024f5de46d06c70526a569ff537f","comments_url":"https://api.github.com/repos/nitlang/nit/commits/64ce1f587209024f5de46d06c70526a569ff537f/comments","author":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"committer":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"parents":[{"sha":"a882d5602264623f9275698b5abe73d95b127b9f","url":"https://api.github.com/repos/nitlang/nit/commits/a882d5602264623f9275698b5abe73d95b127b9f","html_url":"https://github.com/nitlang/nit/commit/a882d5602264623f9275698b5abe73d95b127b9f"}],"stats":{"total":13,"additions":13,"deletions":0},"files":[{"sha":"664ecbcb0652892b7659a98e5fb24c995211563c","filename":"lib/standard/string.nit","status":"modified","additions":13,"deletions":0,"changes":13,"blob_url":"https://github.com/nitlang/nit/blob/64ce1f587209024f5de46d06c70526a569ff537f/lib/standard/string.nit","raw_url":"https://github.com/nitlang/nit/raw/64ce1f587209024f5de46d06c70526a569ff537f/lib/standard/string.nit","contents_url":"https://api.github.com/repos/nitlang/nit/contents/lib/standard/string.nit?ref=64ce1f587209024f5de46d06c70526a569ff537f","patch":"@@ -385,6 +385,19 @@ abstract class Text\n \t#     assert \"\\na\\nb\\tc\\t\".trim          == \"a\\nb\\tc\"\n \tfun trim: SELFTYPE do return (self.l_trim).r_trim\n \n+\t# Returns `self` removed from its last `\\n` (if any).\n+\t#\n+\t#    assert \"Hello\\n\".chomp == \"Hello\"\n+\t#    assert \"Hello\".chomp   == \"Hello\"\n+\t#    assert \"\\n\\n\\n\".chomp  == \"\\n\\n\"\n+\t#\n+\t# This method is mainly used to remove the LINE_FEED character from lines of text.\n+\tfun chomp: SELFTYPE\n+\tdo\n+\t\tif self.chars.last != '\\n' then return self\n+\t\treturn substring(0, length-1)\n+\tend\n+\n \t# Justify a self in a space of `length`\n \t#\n \t# `left` is the space ratio on the left side."}]}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_1000.res b/lib/github/tests/mock/repo_issues_1000.res
new file mode 100644 (file)
index 0000000..24294cf
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/issues/1000","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/1000/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/1000/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/1000/events","html_url":"https://github.com/nitlang/nit/pull/1000","id":51639845,"node_id":"MDExOlB1bGxSZXF1ZXN0MjU4NzM0Mzg=","number":1000,"title":"Raise nitc from the dead","user":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"labels":[{"id":81916206,"node_id":"MDU6TGFiZWw4MTkxNjIwNg==","url":"https://api.github.com/repos/nitlang/nit/labels/ok_will_merge","name":"ok_will_merge","color":"009800","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2014-12-11T02:55:09Z","updated_at":"2014-12-18T14:14:33Z","closed_at":"2014-12-13T15:38:09Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/1000","html_url":"https://github.com/nitlang/nit/pull/1000","diff_url":"https://github.com/nitlang/nit/pull/1000.diff","patch_url":"https://github.com/nitlang/nit/pull/1000.patch"},"body":"Raise dead on `nitc`.\nIt's super effective...\n","closed_by":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false}}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_comments_6020149.res b/lib/github/tests/mock/repo_issues_comments_6020149.res
new file mode 100644 (file)
index 0000000..8b2f691
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/issues/comments/6020149","html_url":"https://github.com/nitlang/nit/pull/10#issuecomment-6020149","issue_url":"https://api.github.com/repos/nitlang/nit/issues/10","id":6020149,"node_id":"MDEyOklzc3VlQ29tbWVudDYwMjAxNDk=","user":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"created_at":"2012-05-30T20:16:54Z","updated_at":"2012-05-30T20:16:54Z","author_association":"MEMBER","body":"Rebased e766cde to drop the ugly github merge commit 0e3a614.\nThe result is 8f221e3.\n"}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_comments_nit.res b/lib/github/tests/mock/repo_issues_comments_nit.res
new file mode 100644 (file)
index 0000000..bf10fff
--- /dev/null
@@ -0,0 +1 @@
+[{"url":"https://api.github.com/repos/nitlang/nit/issues/comments/66562728","html_url":"https://github.com/nitlang/nit/pull/1000#issuecomment-66562728","issue_url":"https://api.github.com/repos/nitlang/nit/issues/1000","id":66562728,"node_id":"MDEyOklzc3VlQ29tbWVudDY2NTYyNzI4","user":{"login":"R4PaSs","id":1444825,"node_id":"MDQ6VXNlcjE0NDQ4MjU=","avatar_url":"https://avatars3.githubusercontent.com/u/1444825?v=4","gravatar_id":"","url":"https://api.github.com/users/R4PaSs","html_url":"https://github.com/R4PaSs","followers_url":"https://api.github.com/users/R4PaSs/followers","following_url":"https://api.github.com/users/R4PaSs/following{/other_user}","gists_url":"https://api.github.com/users/R4PaSs/gists{/gist_id}","starred_url":"https://api.github.com/users/R4PaSs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R4PaSs/subscriptions","organizations_url":"https://api.github.com/users/R4PaSs/orgs","repos_url":"https://api.github.com/users/R4PaSs/repos","events_url":"https://api.github.com/users/R4PaSs/events{/privacy}","received_events_url":"https://api.github.com/users/R4PaSs/received_events","type":"User","site_admin":false},"created_at":"2014-12-11T03:05:01Z","updated_at":"2014-12-11T03:05:01Z","author_association":"CONTRIBUTOR","body":"The king is dead, long live the king.\n"},{"url":"https://api.github.com/repos/nitlang/nit/issues/comments/66562735","html_url":"https://github.com/nitlang/nit/pull/1000#issuecomment-66562735","issue_url":"https://api.github.com/repos/nitlang/nit/issues/1000","id":66562735,"node_id":"MDEyOklzc3VlQ29tbWVudDY2NTYyNzM1","user":{"login":"R4PaSs","id":1444825,"node_id":"MDQ6VXNlcjE0NDQ4MjU=","avatar_url":"https://avatars3.githubusercontent.com/u/1444825?v=4","gravatar_id":"","url":"https://api.github.com/users/R4PaSs","html_url":"https://github.com/R4PaSs","followers_url":"https://api.github.com/users/R4PaSs/followers","following_url":"https://api.github.com/users/R4PaSs/following{/other_user}","gists_url":"https://api.github.com/users/R4PaSs/gists{/gist_id}","starred_url":"https://api.github.com/users/R4PaSs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R4PaSs/subscriptions","organizations_url":"https://api.github.com/users/R4PaSs/orgs","repos_url":"https://api.github.com/users/R4PaSs/repos","events_url":"https://api.github.com/users/R4PaSs/events{/privacy}","received_events_url":"https://api.github.com/users/R4PaSs/received_events","type":"User","site_admin":false},"created_at":"2014-12-11T03:05:07Z","updated_at":"2014-12-11T03:05:07Z","author_association":"CONTRIBUTOR","body":"+1\n"},{"url":"https://api.github.com/repos/nitlang/nit/issues/comments/66563386","html_url":"https://github.com/nitlang/nit/pull/1000#issuecomment-66563386","issue_url":"https://api.github.com/repos/nitlang/nit/issues/1000","id":66563386,"node_id":"MDEyOklzc3VlQ29tbWVudDY2NTYzMzg2","user":{"login":"xymus","id":208057,"node_id":"MDQ6VXNlcjIwODA1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/208057?v=4","gravatar_id":"","url":"https://api.github.com/users/xymus","html_url":"https://github.com/xymus","followers_url":"https://api.github.com/users/xymus/followers","following_url":"https://api.github.com/users/xymus/following{/other_user}","gists_url":"https://api.github.com/users/xymus/gists{/gist_id}","starred_url":"https://api.github.com/users/xymus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xymus/subscriptions","organizations_url":"https://api.github.com/users/xymus/orgs","repos_url":"https://api.github.com/users/xymus/repos","events_url":"https://api.github.com/users/xymus/events{/privacy}","received_events_url":"https://api.github.com/users/xymus/received_events","type":"User","site_admin":false},"created_at":"2014-12-11T03:15:31Z","updated_at":"2014-12-11T03:15:31Z","author_association":"CONTRIBUTOR","body":"Je seconde Lucas, +1, mais je crains qu'il faudra aussi mettre à jour plusieurs contrib!\n"}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_events_199674194.res b/lib/github/tests/mock/repo_issues_events_199674194.res
new file mode 100644 (file)
index 0000000..5e6b941
--- /dev/null
@@ -0,0 +1 @@
+{"id":199674194,"node_id":"MDEyOkxhYmVsZWRFdmVudDE5OTY3NDE5NA==","url":"https://api.github.com/repos/nitlang/nit/issues/events/199674194","actor":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"event":"labeled","commit_id":null,"commit_url":null,"created_at":"2014-11-27T20:32:30Z","label":{"name":"need_review","color":"fbca04"},"issue":{"url":"https://api.github.com/repos/nitlang/nit/issues/945","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/945/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/945/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/945/events","html_url":"https://github.com/nitlang/nit/pull/945","id":50322007,"node_id":"MDExOlB1bGxSZXF1ZXN0MjUxNjg4ODY=","number":945,"title":"Useless type","user":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"labels":[{"id":81916206,"node_id":"MDU6TGFiZWw4MTkxNjIwNg==","url":"https://api.github.com/repos/nitlang/nit/labels/ok_will_merge","name":"ok_will_merge","color":"009800","default":false}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2014-11-27T20:32:27Z","updated_at":"2014-12-03T20:22:42Z","closed_at":"2014-12-01T13:53:03Z","author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/945","html_url":"https://github.com/nitlang/nit/pull/945","diff_url":"https://github.com/nitlang/nit/pull/945.diff","patch_url":"https://github.com/nitlang/nit/pull/945.patch"},"body":"Fix a wrong `useless-type` warning for attributes.\nExtends the `useless-type` warning to local variables.\n"}}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_events_nit.res b/lib/github/tests/mock/repo_issues_events_nit.res
new file mode 100644 (file)
index 0000000..8fad615
--- /dev/null
@@ -0,0 +1 @@
+[{"id":205931537,"node_id":"MDEyOkxhYmVsZWRFdmVudDIwNTkzMTUzNw==","url":"https://api.github.com/repos/nitlang/nit/issues/events/205931537","actor":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"event":"labeled","commit_id":null,"commit_url":null,"created_at":"2014-12-11T02:55:15Z","label":{"name":"need_review","color":"fbca04"}},{"id":205944886,"node_id":"MDIzOkhlYWRSZWZGb3JjZVB1c2hlZEV2ZW50MjA1OTQ0ODg2","url":"https://api.github.com/repos/nitlang/nit/issues/events/205944886","actor":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"event":"head_ref_force_pushed","commit_id":null,"commit_url":null,"created_at":"2014-12-11T03:49:46Z"},{"id":205946351,"node_id":"MDE0Ok1lbnRpb25lZEV2ZW50MjA1OTQ2MzUx","url":"https://api.github.com/repos/nitlang/nit/issues/events/205946351","actor":{"login":"xymus","id":208057,"node_id":"MDQ6VXNlcjIwODA1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/208057?v=4","gravatar_id":"","url":"https://api.github.com/users/xymus","html_url":"https://github.com/xymus","followers_url":"https://api.github.com/users/xymus/followers","following_url":"https://api.github.com/users/xymus/following{/other_user}","gists_url":"https://api.github.com/users/xymus/gists{/gist_id}","starred_url":"https://api.github.com/users/xymus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xymus/subscriptions","organizations_url":"https://api.github.com/users/xymus/orgs","repos_url":"https://api.github.com/users/xymus/repos","events_url":"https://api.github.com/users/xymus/events{/privacy}","received_events_url":"https://api.github.com/users/xymus/received_events","type":"User","site_admin":false},"event":"mentioned","commit_id":null,"commit_url":null,"created_at":"2014-12-11T03:55:37Z"}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_issues_nit.res b/lib/github/tests/mock/repo_issues_nit.res
new file mode 100644 (file)
index 0000000..43ca3f2
--- /dev/null
@@ -0,0 +1 @@
+[{"url":"https://api.github.com/repos/nitlang/nit/issues/2755","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/2755/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2755/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/2755/events","html_url":"https://github.com/nitlang/nit/pull/2755","id":458934924,"node_id":"MDExOlB1bGxSZXF1ZXN0MjkwNDEzOTAw","number":2755,"title":"nitrpg: Move `nitrpg` to its own repository","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2019-06-20T23:34:44Z","updated_at":"2019-06-21T00:45:47Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/2755","html_url":"https://github.com/nitlang/nit/pull/2755","diff_url":"https://github.com/nitlang/nit/pull/2755.diff","patch_url":"https://github.com/nitlang/nit/pull/2755.patch"},"body":"`nitrpg` is broken since a long time. I think https:/api.github.com actually changed twice since it broke. I don't plan on killing it yet but I moved it to its own repository until I worked again on it (or never).\r\n\r\nSee https://github.com/Morriar/nitrpg.\r\n\r\nSigned-off-by: Alexandre Terrasa <alexandre@moz-code.org>"},{"url":"https://api.github.com/repos/nitlang/nit/issues/2754","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/2754/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2754/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/2754/events","html_url":"https://github.com/nitlang/nit/pull/2754","id":458805732,"node_id":"MDExOlB1bGxSZXF1ZXN0MjkwMzI2MTEw","number":2754,"title":"First (and small) integration of the ICU library in Nit : locale and case modification","user":{"login":"anadaouda","id":36400538,"node_id":"MDQ6VXNlcjM2NDAwNTM4","avatar_url":"https://avatars1.githubusercontent.com/u/36400538?v=4","gravatar_id":"","url":"https://api.github.com/users/anadaouda","html_url":"https://github.com/anadaouda","followers_url":"https://api.github.com/users/anadaouda/followers","following_url":"https://api.github.com/users/anadaouda/following{/other_user}","gists_url":"https://api.github.com/users/anadaouda/gists{/gist_id}","starred_url":"https://api.github.com/users/anadaouda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anadaouda/subscriptions","organizations_url":"https://api.github.com/users/anadaouda/orgs","repos_url":"https://api.github.com/users/anadaouda/repos","events_url":"https://api.github.com/users/anadaouda/events{/privacy}","received_events_url":"https://api.github.com/users/anadaouda/received_events","type":"User","site_admin":false},"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2019-06-20T18:28:52Z","updated_at":"2019-06-20T18:48:05Z","closed_at":null,"author_association":"FIRST_TIMER","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/2754","html_url":"https://github.com/nitlang/nit/pull/2754","diff_url":"https://github.com/nitlang/nit/pull/2754.diff","patch_url":"https://github.com/nitlang/nit/pull/2754.patch"},"body":"## ICU\r\nICU (International Components for Unicode) is an API which implements algorithms provided by the Unicode Consortium in C.\r\n\r\n## locale.nit\r\nLocale object which makes sure that the name of the locale is valid and handled by the ICU library\r\n\r\n## caseModification.nit\r\nAddition of `uppercase`, `lowercase` and `title` in the `String` and `CString` classes using a `CaseModification` object."},{"url":"https://api.github.com/repos/nitlang/nit/issues/2753","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/2753/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2753/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/2753/events","html_url":"https://github.com/nitlang/nit/pull/2753","id":457781476,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjg5NTE5NzM0","number":2753,"title":"Mock Github API tests","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false},{"id":225254102,"node_id":"MDU6TGFiZWwyMjUyNTQxMDI=","url":"https://api.github.com/repos/nitlang/nit/labels/tests_are_ok","name":"tests_are_ok","color":"00b800","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2019-06-19T02:53:50Z","updated_at":"2019-06-20T18:27:49Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/2753","html_url":"https://github.com/nitlang/nit/pull/2753","diff_url":"https://github.com/nitlang/nit/pull/2753.diff","patch_url":"https://github.com/nitlang/nit/pull/2753.patch"},"body":"This PR adds a mock to GithubAPI so we can avoid sending requests to the API on CI.\r\n\r\nFor each API call we save the actual Github response body from the API and reuse it during the tests.\r\nThe attribute `update_responses_cache` can be set to `true` so the cache files are updated from the API when `nitunit` is called."}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_labels_nit.res b/lib/github/tests/mock/repo_labels_nit.res
new file mode 100644 (file)
index 0000000..b2856da
--- /dev/null
@@ -0,0 +1 @@
+[{"id":87474920,"node_id":"MDU6TGFiZWw4NzQ3NDkyMA==","url":"https://api.github.com/repos/nitlang/nit/labels/API","name":"API","color":"006b75","default":false},{"id":243644303,"node_id":"MDU6TGFiZWwyNDM2NDQzMDM=","url":"https://api.github.com/repos/nitlang/nit/labels/Feature%20Request","name":"Feature Request","color":"d4c5f9","default":false},{"id":250684857,"node_id":"MDU6TGFiZWwyNTA2ODQ4NTc=","url":"https://api.github.com/repos/nitlang/nit/labels/NEP","name":"NEP","color":"50a0ff","default":false}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_labels_ok_will_merge.res b/lib/github/tests/mock/repo_labels_ok_will_merge.res
new file mode 100644 (file)
index 0000000..e75432c
--- /dev/null
@@ -0,0 +1 @@
+{"id":81916206,"node_id":"MDU6TGFiZWw4MTkxNjIwNg==","url":"https://api.github.com/repos/nitlang/nit/labels/ok_will_merge","name":"ok_will_merge","color":"009800","default":false}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_milestones_4.res b/lib/github/tests/mock/repo_milestones_4.res
new file mode 100644 (file)
index 0000000..69abdc0
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/milestones/4","html_url":"https://github.com/nitlang/nit/milestone/4","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/4/labels","id":795157,"node_id":"MDk6TWlsZXN0b25lNzk1MTU3","number":4,"title":"v1.0prealpha","description":"The first public version that we are proud off and can be used sanely by non Nit people.","creator":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":22,"state":"open","created_at":"2014-09-19T00:16:45Z","updated_at":"2017-06-02T12:43:15Z","due_on":null,"closed_at":null}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_milestones_nit.res b/lib/github/tests/mock/repo_milestones_nit.res
new file mode 100644 (file)
index 0000000..071bf39
--- /dev/null
@@ -0,0 +1 @@
+[{"url":"https://api.github.com/repos/nitlang/nit/milestones/4","html_url":"https://github.com/nitlang/nit/milestone/4","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/4/labels","id":795157,"node_id":"MDk6TWlsZXN0b25lNzk1MTU3","number":4,"title":"v1.0prealpha","description":"The first public version that we are proud off and can be used sanely by non Nit people.","creator":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":22,"state":"open","created_at":"2014-09-19T00:16:45Z","updated_at":"2017-06-02T12:43:15Z","due_on":null,"closed_at":null},{"url":"https://api.github.com/repos/nitlang/nit/milestones/5","html_url":"https://github.com/nitlang/nit/milestone/5","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/5/labels","id":904285,"node_id":"MDk6TWlsZXN0b25lOTA0Mjg1","number":5,"title":"nitdoc - Structured Documentation","description":"Display the documentation as a user manual and with reading suggestions.","creator":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":7,"state":"open","created_at":"2014-12-15T13:49:19Z","updated_at":"2018-06-21T12:50:02Z","due_on":null,"closed_at":null},{"url":"https://api.github.com/repos/nitlang/nit/milestones/6","html_url":"https://github.com/nitlang/nit/milestone/6","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/6/labels","id":904291,"node_id":"MDk6TWlsZXN0b25lOTA0Mjkx","number":6,"title":"nitdoc - Abstraction levels","description":"Provide abstraction mecanisms for lists and tress, diagrams and figures, source code presentation.","creator":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2014-12-15T13:52:04Z","updated_at":"2014-12-15T15:37:50Z","due_on":null,"closed_at":null}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_nit.res b/lib/github/tests/mock/repo_nit.res
new file mode 100644 (file)
index 0000000..8acf396
--- /dev/null
@@ -0,0 +1 @@
+{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-17T13:13:03Z","pushed_at":"2019-06-19T00:02:11Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123083,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":56,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":171,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":56,"open_issues":171,"watchers":187,"default_branch":"master","permissions":{"admin":false,"push":true,"pull":true},"organization":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"network_count":56,"subscribers_count":18}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_nit_contributors.res b/lib/github/tests/mock/repo_nit_contributors.res
new file mode 100644 (file)
index 0000000..38729f7
--- /dev/null
@@ -0,0 +1 @@
+[{"total":1,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":16,"d":0,"c":1},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"ventilooo","id":9092178,"node_id":"MDQ6VXNlcjkwOTIxNzg=","avatar_url":"https://avatars1.githubusercontent.com/u/9092178?v=4","gravatar_id":"","url":"https://api.github.com/users/ventilooo","html_url":"https://github.com/ventilooo","followers_url":"https://api.github.com/users/ventilooo/followers","following_url":"https://api.github.com/users/ventilooo/following{/other_user}","gists_url":"https://api.github.com/users/ventilooo/gists{/gist_id}","starred_url":"https://api.github.com/users/ventilooo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ventilooo/subscriptions","organizations_url":"https://api.github.com/users/ventilooo/orgs","repos_url":"https://api.github.com/users/ventilooo/repos","events_url":"https://api.github.com/users/ventilooo/events{/privacy}","received_events_url":"https://api.github.com/users/ventilooo/received_events","type":"User","site_admin":false}},{"total":1,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":3,"d":6,"c":1},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"tonygaetani","id":5572832,"node_id":"MDQ6VXNlcjU1NzI4MzI=","avatar_url":"https://avatars0.githubusercontent.com/u/5572832?v=4","gravatar_id":"","url":"https://api.github.com/users/tonygaetani","html_url":"https://github.com/tonygaetani","followers_url":"https://api.github.com/users/tonygaetani/followers","following_url":"https://api.github.com/users/tonygaetani/following{/other_user}","gists_url":"https://api.github.com/users/tonygaetani/gists{/gist_id}","starred_url":"https://api.github.com/users/tonygaetani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tonygaetani/subscriptions","organizations_url":"https://api.github.com/users/tonygaetani/orgs","repos_url":"https://api.github.com/users/tonygaetani/repos","events_url":"https://api.github.com/users/tonygaetani/events{/privacy}","received_events_url":"https://api.github.com/users/tonygaetani/received_events","type":"User","site_admin":false}},{"total":1,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":24,"d":0,"c":1},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"jpcaissy","id":632559,"node_id":"MDQ6VXNlcjYzMjU1OQ==","avatar_url":"https://avatars1.githubusercontent.com/u/632559?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcaissy","html_url":"https://github.com/jpcaissy","followers_url":"https://api.github.com/users/jpcaissy/followers","following_url":"https://api.github.com/users/jpcaissy/following{/other_user}","gists_url":"https://api.github.com/users/jpcaissy/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcaissy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcaissy/subscriptions","organizations_url":"https://api.github.com/users/jpcaissy/orgs","repos_url":"https://api.github.com/users/jpcaissy/repos","events_url":"https://api.github.com/users/jpcaissy/events{/privacy}","received_events_url":"https://api.github.com/users/jpcaissy/received_events","type":"User","site_admin":false}},{"total":1,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":305,"d":0,"c":1},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"budi-kurniawan","id":2431123,"node_id":"MDQ6VXNlcjI0MzExMjM=","avatar_url":"https://avatars0.githubusercontent.com/u/2431123?v=4","gravatar_id":"","url":"https://api.github.com/users/budi-kurniawan","html_url":"https://github.com/budi-kurniawan","followers_url":"https://api.github.com/users/budi-kurniawan/followers","following_url":"https://api.github.com/users/budi-kurniawan/following{/other_user}","gists_url":"https://api.github.com/users/budi-kurniawan/gists{/gist_id}","starred_url":"https://api.github.com/users/budi-kurniawan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/budi-kurniawan/subscriptions","organizations_url":"https://api.github.com/users/budi-kurniawan/orgs","repos_url":"https://api.github.com/users/budi-kurniawan/repos","events_url":"https://api.github.com/users/budi-kurniawan/events{/privacy}","received_events_url":"https://api.github.com/users/budi-kurniawan/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":53,"d":0,"c":1},{"w":1526169600,"a":122,"d":13,"c":1},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"olivierschirm","id":38984634,"node_id":"MDQ6VXNlcjM4OTg0NjM0","avatar_url":"https://avatars1.githubusercontent.com/u/38984634?v=4","gravatar_id":"","url":"https://api.github.com/users/olivierschirm","html_url":"https://github.com/olivierschirm","followers_url":"https://api.github.com/users/olivierschirm/followers","following_url":"https://api.github.com/users/olivierschirm/following{/other_user}","gists_url":"https://api.github.com/users/olivierschirm/gists{/gist_id}","starred_url":"https://api.github.com/users/olivierschirm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olivierschirm/subscriptions","organizations_url":"https://api.github.com/users/olivierschirm/orgs","repos_url":"https://api.github.com/users/olivierschirm/repos","events_url":"https://api.github.com/users/olivierschirm/events{/privacy}","received_events_url":"https://api.github.com/users/olivierschirm/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":164,"d":30,"c":1},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":47,"d":2,"c":1},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"matthmsl","id":8661695,"node_id":"MDQ6VXNlcjg2NjE2OTU=","avatar_url":"https://avatars3.githubusercontent.com/u/8661695?v=4","gravatar_id":"","url":"https://api.github.com/users/matthmsl","html_url":"https://github.com/matthmsl","followers_url":"https://api.github.com/users/matthmsl/followers","following_url":"https://api.github.com/users/matthmsl/following{/other_user}","gists_url":"https://api.github.com/users/matthmsl/gists{/gist_id}","starred_url":"https://api.github.com/users/matthmsl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthmsl/subscriptions","organizations_url":"https://api.github.com/users/matthmsl/orgs","repos_url":"https://api.github.com/users/matthmsl/repos","events_url":"https://api.github.com/users/matthmsl/events{/privacy}","received_events_url":"https://api.github.com/users/matthmsl/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":47,"d":27,"c":2},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"itch76","id":6430803,"node_id":"MDQ6VXNlcjY0MzA4MDM=","avatar_url":"https://avatars0.githubusercontent.com/u/6430803?v=4","gravatar_id":"","url":"https://api.github.com/users/itch76","html_url":"https://github.com/itch76","followers_url":"https://api.github.com/users/itch76/followers","following_url":"https://api.github.com/users/itch76/following{/other_user}","gists_url":"https://api.github.com/users/itch76/gists{/gist_id}","starred_url":"https://api.github.com/users/itch76/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itch76/subscriptions","organizations_url":"https://api.github.com/users/itch76/orgs","repos_url":"https://api.github.com/users/itch76/repos","events_url":"https://api.github.com/users/itch76/events{/privacy}","received_events_url":"https://api.github.com/users/itch76/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":36,"d":1,"c":2},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Johann673","id":6461852,"node_id":"MDQ6VXNlcjY0NjE4NTI=","avatar_url":"https://avatars2.githubusercontent.com/u/6461852?v=4","gravatar_id":"","url":"https://api.github.com/users/Johann673","html_url":"https://github.com/Johann673","followers_url":"https://api.github.com/users/Johann673/followers","following_url":"https://api.github.com/users/Johann673/following{/other_user}","gists_url":"https://api.github.com/users/Johann673/gists{/gist_id}","starred_url":"https://api.github.com/users/Johann673/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Johann673/subscriptions","organizations_url":"https://api.github.com/users/Johann673/orgs","repos_url":"https://api.github.com/users/Johann673/repos","events_url":"https://api.github.com/users/Johann673/events{/privacy}","received_events_url":"https://api.github.com/users/Johann673/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":90,"d":0,"c":2},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Herve-M","id":1846023,"node_id":"MDQ6VXNlcjE4NDYwMjM=","avatar_url":"https://avatars3.githubusercontent.com/u/1846023?v=4","gravatar_id":"","url":"https://api.github.com/users/Herve-M","html_url":"https://github.com/Herve-M","followers_url":"https://api.github.com/users/Herve-M/followers","following_url":"https://api.github.com/users/Herve-M/following{/other_user}","gists_url":"https://api.github.com/users/Herve-M/gists{/gist_id}","starred_url":"https://api.github.com/users/Herve-M/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Herve-M/subscriptions","organizations_url":"https://api.github.com/users/Herve-M/orgs","repos_url":"https://api.github.com/users/Herve-M/repos","events_url":"https://api.github.com/users/Herve-M/events{/privacy}","received_events_url":"https://api.github.com/users/Herve-M/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":2,"d":2,"c":2},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"ChrisProlls","id":1511666,"node_id":"MDQ6VXNlcjE1MTE2NjY=","avatar_url":"https://avatars1.githubusercontent.com/u/1511666?v=4","gravatar_id":"","url":"https://api.github.com/users/ChrisProlls","html_url":"https://github.com/ChrisProlls","followers_url":"https://api.github.com/users/ChrisProlls/followers","following_url":"https://api.github.com/users/ChrisProlls/following{/other_user}","gists_url":"https://api.github.com/users/ChrisProlls/gists{/gist_id}","starred_url":"https://api.github.com/users/ChrisProlls/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ChrisProlls/subscriptions","organizations_url":"https://api.github.com/users/ChrisProlls/orgs","repos_url":"https://api.github.com/users/ChrisProlls/repos","events_url":"https://api.github.com/users/ChrisProlls/events{/privacy}","received_events_url":"https://api.github.com/users/ChrisProlls/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":6,"d":0,"c":1},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":77,"d":5,"c":1},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"CaptainKali","id":6105829,"node_id":"MDQ6VXNlcjYxMDU4Mjk=","avatar_url":"https://avatars3.githubusercontent.com/u/6105829?v=4","gravatar_id":"","url":"https://api.github.com/users/CaptainKali","html_url":"https://github.com/CaptainKali","followers_url":"https://api.github.com/users/CaptainKali/followers","following_url":"https://api.github.com/users/CaptainKali/following{/other_user}","gists_url":"https://api.github.com/users/CaptainKali/gists{/gist_id}","starred_url":"https://api.github.com/users/CaptainKali/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CaptainKali/subscriptions","organizations_url":"https://api.github.com/users/CaptainKali/orgs","repos_url":"https://api.github.com/users/CaptainKali/repos","events_url":"https://api.github.com/users/CaptainKali/events{/privacy}","received_events_url":"https://api.github.com/users/CaptainKali/received_events","type":"User","site_admin":false}},{"total":2,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":1018,"d":0,"c":1},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":62,"d":0,"c":1},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Bl4ckb0ne","id":5001005,"node_id":"MDQ6VXNlcjUwMDEwMDU=","avatar_url":"https://avatars3.githubusercontent.com/u/5001005?v=4","gravatar_id":"","url":"https://api.github.com/users/Bl4ckb0ne","html_url":"https://github.com/Bl4ckb0ne","followers_url":"https://api.github.com/users/Bl4ckb0ne/followers","following_url":"https://api.github.com/users/Bl4ckb0ne/following{/other_user}","gists_url":"https://api.github.com/users/Bl4ckb0ne/gists{/gist_id}","starred_url":"https://api.github.com/users/Bl4ckb0ne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Bl4ckb0ne/subscriptions","organizations_url":"https://api.github.com/users/Bl4ckb0ne/orgs","repos_url":"https://api.github.com/users/Bl4ckb0ne/repos","events_url":"https://api.github.com/users/Bl4ckb0ne/events{/privacy}","received_events_url":"https://api.github.com/users/Bl4ckb0ne/received_events","type":"User","site_admin":false}},{"total":3,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":48,"d":4,"c":3},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"matthieuauger","id":1172099,"node_id":"MDQ6VXNlcjExNzIwOTk=","avatar_url":"https://avatars0.githubusercontent.com/u/1172099?v=4","gravatar_id":"","url":"https://api.github.com/users/matthieuauger","html_url":"https://github.com/matthieuauger","followers_url":"https://api.github.com/users/matthieuauger/followers","following_url":"https://api.github.com/users/matthieuauger/following{/other_user}","gists_url":"https://api.github.com/users/matthieuauger/gists{/gist_id}","starred_url":"https://api.github.com/users/matthieuauger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matthieuauger/subscriptions","organizations_url":"https://api.github.com/users/matthieuauger/orgs","repos_url":"https://api.github.com/users/matthieuauger/repos","events_url":"https://api.github.com/users/matthieuauger/events{/privacy}","received_events_url":"https://api.github.com/users/matthieuauger/received_events","type":"User","site_admin":false}},{"total":3,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":18,"d":7,"c":2},{"w":1546128000,"a":2,"d":2,"c":1},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"dullin","id":7041033,"node_id":"MDQ6VXNlcjcwNDEwMzM=","avatar_url":"https://avatars0.githubusercontent.com/u/7041033?v=4","gravatar_id":"","url":"https://api.github.com/users/dullin","html_url":"https://github.com/dullin","followers_url":"https://api.github.com/users/dullin/followers","following_url":"https://api.github.com/users/dullin/following{/other_user}","gists_url":"https://api.github.com/users/dullin/gists{/gist_id}","starred_url":"https://api.github.com/users/dullin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dullin/subscriptions","organizations_url":"https://api.github.com/users/dullin/orgs","repos_url":"https://api.github.com/users/dullin/repos","events_url":"https://api.github.com/users/dullin/events{/privacy}","received_events_url":"https://api.github.com/users/dullin/received_events","type":"User","site_admin":false}},{"total":3,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":13,"d":0,"c":1},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":907,"d":0,"c":1},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":76,"d":0,"c":1},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"ablondin","id":398340,"node_id":"MDQ6VXNlcjM5ODM0MA==","avatar_url":"https://avatars1.githubusercontent.com/u/398340?v=4","gravatar_id":"","url":"https://api.github.com/users/ablondin","html_url":"https://github.com/ablondin","followers_url":"https://api.github.com/users/ablondin/followers","following_url":"https://api.github.com/users/ablondin/following{/other_user}","gists_url":"https://api.github.com/users/ablondin/gists{/gist_id}","starred_url":"https://api.github.com/users/ablondin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ablondin/subscriptions","organizations_url":"https://api.github.com/users/ablondin/orgs","repos_url":"https://api.github.com/users/ablondin/repos","events_url":"https://api.github.com/users/ablondin/events{/privacy}","received_events_url":"https://api.github.com/users/ablondin/received_events","type":"User","site_admin":false}},{"total":4,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":180,"d":0,"c":1},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":25,"d":25,"c":1},{"w":1433030400,"a":83,"d":7,"c":1},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":19,"d":0,"c":1},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"MehdiAit","id":3407293,"node_id":"MDQ6VXNlcjM0MDcyOTM=","avatar_url":"https://avatars0.githubusercontent.com/u/3407293?v=4","gravatar_id":"","url":"https://api.github.com/users/MehdiAit","html_url":"https://github.com/MehdiAit","followers_url":"https://api.github.com/users/MehdiAit/followers","following_url":"https://api.github.com/users/MehdiAit/following{/other_user}","gists_url":"https://api.github.com/users/MehdiAit/gists{/gist_id}","starred_url":"https://api.github.com/users/MehdiAit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MehdiAit/subscriptions","organizations_url":"https://api.github.com/users/MehdiAit/orgs","repos_url":"https://api.github.com/users/MehdiAit/repos","events_url":"https://api.github.com/users/MehdiAit/events{/privacy}","received_events_url":"https://api.github.com/users/MehdiAit/received_events","type":"User","site_admin":false}},{"total":4,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":65,"d":0,"c":4},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"AnisBoubaker","id":46570545,"node_id":"MDQ6VXNlcjQ2NTcwNTQ1","avatar_url":"https://avatars0.githubusercontent.com/u/46570545?v=4","gravatar_id":"","url":"https://api.github.com/users/AnisBoubaker","html_url":"https://github.com/AnisBoubaker","followers_url":"https://api.github.com/users/AnisBoubaker/followers","following_url":"https://api.github.com/users/AnisBoubaker/following{/other_user}","gists_url":"https://api.github.com/users/AnisBoubaker/gists{/gist_id}","starred_url":"https://api.github.com/users/AnisBoubaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnisBoubaker/subscriptions","organizations_url":"https://api.github.com/users/AnisBoubaker/orgs","repos_url":"https://api.github.com/users/AnisBoubaker/repos","events_url":"https://api.github.com/users/AnisBoubaker/events{/privacy}","received_events_url":"https://api.github.com/users/AnisBoubaker/received_events","type":"User","site_admin":false}},{"total":5,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":142,"d":0,"c":5},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"renatamc","id":12816791,"node_id":"MDQ6VXNlcjEyODE2Nzkx","avatar_url":"https://avatars0.githubusercontent.com/u/12816791?v=4","gravatar_id":"","url":"https://api.github.com/users/renatamc","html_url":"https://github.com/renatamc","followers_url":"https://api.github.com/users/renatamc/followers","following_url":"https://api.github.com/users/renatamc/following{/other_user}","gists_url":"https://api.github.com/users/renatamc/gists{/gist_id}","starred_url":"https://api.github.com/users/renatamc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/renatamc/subscriptions","organizations_url":"https://api.github.com/users/renatamc/orgs","repos_url":"https://api.github.com/users/renatamc/repos","events_url":"https://api.github.com/users/renatamc/events{/privacy}","received_events_url":"https://api.github.com/users/renatamc/received_events","type":"User","site_admin":false}},{"total":5,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":140,"d":1,"c":1},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":404,"d":0,"c":1},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":231,"d":211,"c":3},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"lucasmatthieu","id":1231844,"node_id":"MDQ6VXNlcjEyMzE4NDQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1231844?v=4","gravatar_id":"","url":"https://api.github.com/users/lucasmatthieu","html_url":"https://github.com/lucasmatthieu","followers_url":"https://api.github.com/users/lucasmatthieu/followers","following_url":"https://api.github.com/users/lucasmatthieu/following{/other_user}","gists_url":"https://api.github.com/users/lucasmatthieu/gists{/gist_id}","starred_url":"https://api.github.com/users/lucasmatthieu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucasmatthieu/subscriptions","organizations_url":"https://api.github.com/users/lucasmatthieu/orgs","repos_url":"https://api.github.com/users/lucasmatthieu/repos","events_url":"https://api.github.com/users/lucasmatthieu/events{/privacy}","received_events_url":"https://api.github.com/users/lucasmatthieu/received_events","type":"User","site_admin":false}},{"total":5,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":13,"d":1,"c":1},{"w":1451174400,"a":325,"d":0,"c":2},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":1,"d":0,"c":1},{"w":1463270400,"a":204,"d":8,"c":1},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"itsWill","id":6386302,"node_id":"MDQ6VXNlcjYzODYzMDI=","avatar_url":"https://avatars1.githubusercontent.com/u/6386302?v=4","gravatar_id":"","url":"https://api.github.com/users/itsWill","html_url":"https://github.com/itsWill","followers_url":"https://api.github.com/users/itsWill/followers","following_url":"https://api.github.com/users/itsWill/following{/other_user}","gists_url":"https://api.github.com/users/itsWill/gists{/gist_id}","starred_url":"https://api.github.com/users/itsWill/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itsWill/subscriptions","organizations_url":"https://api.github.com/users/itsWill/orgs","repos_url":"https://api.github.com/users/itsWill/repos","events_url":"https://api.github.com/users/itsWill/events{/privacy}","received_events_url":"https://api.github.com/users/itsWill/received_events","type":"User","site_admin":false}},{"total":6,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":134,"d":0,"c":1},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":1148,"d":0,"c":1},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":164,"d":0,"c":1},{"w":1432425600,"a":103,"d":0,"c":1},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":114,"d":0,"c":2},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Tagachi","id":8526489,"node_id":"MDQ6VXNlcjg1MjY0ODk=","avatar_url":"https://avatars0.githubusercontent.com/u/8526489?v=4","gravatar_id":"","url":"https://api.github.com/users/Tagachi","html_url":"https://github.com/Tagachi","followers_url":"https://api.github.com/users/Tagachi/followers","following_url":"https://api.github.com/users/Tagachi/following{/other_user}","gists_url":"https://api.github.com/users/Tagachi/gists{/gist_id}","starred_url":"https://api.github.com/users/Tagachi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tagachi/subscriptions","organizations_url":"https://api.github.com/users/Tagachi/orgs","repos_url":"https://api.github.com/users/Tagachi/repos","events_url":"https://api.github.com/users/Tagachi/events{/privacy}","received_events_url":"https://api.github.com/users/Tagachi/received_events","type":"User","site_admin":false}},{"total":6,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":75,"d":21,"c":4},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":9,"d":13,"c":1},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":26,"d":3,"c":1},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Dresdof","id":1213151,"node_id":"MDQ6VXNlcjEyMTMxNTE=","avatar_url":"https://avatars1.githubusercontent.com/u/1213151?v=4","gravatar_id":"","url":"https://api.github.com/users/Dresdof","html_url":"https://github.com/Dresdof","followers_url":"https://api.github.com/users/Dresdof/followers","following_url":"https://api.github.com/users/Dresdof/following{/other_user}","gists_url":"https://api.github.com/users/Dresdof/gists{/gist_id}","starred_url":"https://api.github.com/users/Dresdof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dresdof/subscriptions","organizations_url":"https://api.github.com/users/Dresdof/orgs","repos_url":"https://api.github.com/users/Dresdof/repos","events_url":"https://api.github.com/users/Dresdof/events{/privacy}","received_events_url":"https://api.github.com/users/Dresdof/received_events","type":"User","site_admin":false}},{"total":6,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":884,"d":0,"c":1},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":412,"d":95,"c":1},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":77,"d":103,"c":1},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":126,"d":0,"c":1},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":14,"d":0,"c":2},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Delja","id":26239416,"node_id":"MDQ6VXNlcjI2MjM5NDE2","avatar_url":"https://avatars1.githubusercontent.com/u/26239416?v=4","gravatar_id":"","url":"https://api.github.com/users/Delja","html_url":"https://github.com/Delja","followers_url":"https://api.github.com/users/Delja/followers","following_url":"https://api.github.com/users/Delja/following{/other_user}","gists_url":"https://api.github.com/users/Delja/gists{/gist_id}","starred_url":"https://api.github.com/users/Delja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Delja/subscriptions","organizations_url":"https://api.github.com/users/Delja/orgs","repos_url":"https://api.github.com/users/Delja/repos","events_url":"https://api.github.com/users/Delja/events{/privacy}","received_events_url":"https://api.github.com/users/Delja/received_events","type":"User","site_admin":false}},{"total":7,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":398,"d":14,"c":4},{"w":1250380800,"a":70,"d":26,"c":3},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"JulienChevalier","id":13573494,"node_id":"MDQ6VXNlcjEzNTczNDk0","avatar_url":"https://avatars3.githubusercontent.com/u/13573494?v=4","gravatar_id":"","url":"https://api.github.com/users/JulienChevalier","html_url":"https://github.com/JulienChevalier","followers_url":"https://api.github.com/users/JulienChevalier/followers","following_url":"https://api.github.com/users/JulienChevalier/following{/other_user}","gists_url":"https://api.github.com/users/JulienChevalier/gists{/gist_id}","starred_url":"https://api.github.com/users/JulienChevalier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JulienChevalier/subscriptions","organizations_url":"https://api.github.com/users/JulienChevalier/orgs","repos_url":"https://api.github.com/users/JulienChevalier/repos","events_url":"https://api.github.com/users/JulienChevalier/events{/privacy}","received_events_url":"https://api.github.com/users/JulienChevalier/received_events","type":"User","site_admin":false}},{"total":7,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":34,"d":1,"c":7},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"GeoffreyHecht","id":6412112,"node_id":"MDQ6VXNlcjY0MTIxMTI=","avatar_url":"https://avatars1.githubusercontent.com/u/6412112?v=4","gravatar_id":"","url":"https://api.github.com/users/GeoffreyHecht","html_url":"https://github.com/GeoffreyHecht","followers_url":"https://api.github.com/users/GeoffreyHecht/followers","following_url":"https://api.github.com/users/GeoffreyHecht/following{/other_user}","gists_url":"https://api.github.com/users/GeoffreyHecht/gists{/gist_id}","starred_url":"https://api.github.com/users/GeoffreyHecht/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GeoffreyHecht/subscriptions","organizations_url":"https://api.github.com/users/GeoffreyHecht/orgs","repos_url":"https://api.github.com/users/GeoffreyHecht/repos","events_url":"https://api.github.com/users/GeoffreyHecht/events{/privacy}","received_events_url":"https://api.github.com/users/GeoffreyHecht/received_events","type":"User","site_admin":false}},{"total":10,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":2865,"d":997,"c":9},{"w":1368316800,"a":162,"d":7,"c":1},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"nheu","id":3933505,"node_id":"MDQ6VXNlcjM5MzM1MDU=","avatar_url":"https://avatars1.githubusercontent.com/u/3933505?v=4","gravatar_id":"","url":"https://api.github.com/users/nheu","html_url":"https://github.com/nheu","followers_url":"https://api.github.com/users/nheu/followers","following_url":"https://api.github.com/users/nheu/following{/other_user}","gists_url":"https://api.github.com/users/nheu/gists{/gist_id}","starred_url":"https://api.github.com/users/nheu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nheu/subscriptions","organizations_url":"https://api.github.com/users/nheu/orgs","repos_url":"https://api.github.com/users/nheu/repos","events_url":"https://api.github.com/users/nheu/events{/privacy}","received_events_url":"https://api.github.com/users/nheu/received_events","type":"User","site_admin":false}},{"total":13,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":35,"d":8,"c":3},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":112,"d":0,"c":2},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":848,"d":296,"c":8},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"ppepos","id":6002658,"node_id":"MDQ6VXNlcjYwMDI2NTg=","avatar_url":"https://avatars1.githubusercontent.com/u/6002658?v=4","gravatar_id":"","url":"https://api.github.com/users/ppepos","html_url":"https://github.com/ppepos","followers_url":"https://api.github.com/users/ppepos/followers","following_url":"https://api.github.com/users/ppepos/following{/other_user}","gists_url":"https://api.github.com/users/ppepos/gists{/gist_id}","starred_url":"https://api.github.com/users/ppepos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppepos/subscriptions","organizations_url":"https://api.github.com/users/ppepos/orgs","repos_url":"https://api.github.com/users/ppepos/repos","events_url":"https://api.github.com/users/ppepos/events{/privacy}","received_events_url":"https://api.github.com/users/ppepos/received_events","type":"User","site_admin":false}},{"total":29,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":1,"d":0,"c":1},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":741,"d":2,"c":1},{"w":1398556800,"a":44,"d":48,"c":4},{"w":1399161600,"a":311,"d":0,"c":1},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":5,"d":2,"c":1},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":321,"d":38,"c":8},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":6339,"d":60,"c":12},{"w":1404000000,"a":9,"d":0,"c":1},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Djomanix","id":3929556,"node_id":"MDQ6VXNlcjM5Mjk1NTY=","avatar_url":"https://avatars1.githubusercontent.com/u/3929556?v=4","gravatar_id":"","url":"https://api.github.com/users/Djomanix","html_url":"https://github.com/Djomanix","followers_url":"https://api.github.com/users/Djomanix/followers","following_url":"https://api.github.com/users/Djomanix/following{/other_user}","gists_url":"https://api.github.com/users/Djomanix/gists{/gist_id}","starred_url":"https://api.github.com/users/Djomanix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Djomanix/subscriptions","organizations_url":"https://api.github.com/users/Djomanix/orgs","repos_url":"https://api.github.com/users/Djomanix/repos","events_url":"https://api.github.com/users/Djomanix/events{/privacy}","received_events_url":"https://api.github.com/users/Djomanix/received_events","type":"User","site_admin":false}},{"total":35,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":1492,"d":5,"c":5},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":1,"d":0,"c":1},{"w":1404604800,"a":100,"d":0,"c":2},{"w":1405209600,"a":1286,"d":5,"c":6},{"w":1405814400,"a":377,"d":195,"c":7},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":2370,"d":138,"c":10},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":25,"d":22,"c":3},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":103,"d":0,"c":1},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Freddrickk","id":5316424,"node_id":"MDQ6VXNlcjUzMTY0MjQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5316424?v=4","gravatar_id":"","url":"https://api.github.com/users/Freddrickk","html_url":"https://github.com/Freddrickk","followers_url":"https://api.github.com/users/Freddrickk/followers","following_url":"https://api.github.com/users/Freddrickk/following{/other_user}","gists_url":"https://api.github.com/users/Freddrickk/gists{/gist_id}","starred_url":"https://api.github.com/users/Freddrickk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Freddrickk/subscriptions","organizations_url":"https://api.github.com/users/Freddrickk/orgs","repos_url":"https://api.github.com/users/Freddrickk/repos","events_url":"https://api.github.com/users/Freddrickk/events{/privacy}","received_events_url":"https://api.github.com/users/Freddrickk/received_events","type":"User","site_admin":false}},{"total":50,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":324,"d":0,"c":2},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":377,"d":1,"c":2},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":185,"d":53,"c":4},{"w":1405814400,"a":14,"d":15,"c":1},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":203,"d":57,"c":4},{"w":1410652800,"a":15,"d":0,"c":1},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":176,"d":30,"c":1},{"w":1414886400,"a":12,"d":9,"c":1},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":56,"d":21,"c":2},{"w":1416700800,"a":19,"d":3,"c":1},{"w":1417305600,"a":46,"d":13,"c":3},{"w":1417910400,"a":32,"d":26,"c":2},{"w":1418515200,"a":50,"d":27,"c":1},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":23,"d":13,"c":1},{"w":1421539200,"a":346,"d":2,"c":2},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":225,"d":0,"c":1},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":92,"d":19,"c":3},{"w":1426377600,"a":1459,"d":1442,"c":1},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":1,"d":1,"c":1},{"w":1430006400,"a":54,"d":0,"c":1},{"w":1430611200,"a":46,"d":30,"c":1},{"w":1431216000,"a":8,"d":10,"c":1},{"w":1431820800,"a":106,"d":51,"c":1},{"w":1432425600,"a":223,"d":90,"c":3},{"w":1433030400,"a":1149,"d":4,"c":6},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":16,"d":11,"c":3},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"jpages","id":2535352,"node_id":"MDQ6VXNlcjI1MzUzNTI=","avatar_url":"https://avatars1.githubusercontent.com/u/2535352?v=4","gravatar_id":"","url":"https://api.github.com/users/jpages","html_url":"https://github.com/jpages","followers_url":"https://api.github.com/users/jpages/followers","following_url":"https://api.github.com/users/jpages/following{/other_user}","gists_url":"https://api.github.com/users/jpages/gists{/gist_id}","starred_url":"https://api.github.com/users/jpages/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpages/subscriptions","organizations_url":"https://api.github.com/users/jpages/orgs","repos_url":"https://api.github.com/users/jpages/repos","events_url":"https://api.github.com/users/jpages/events{/privacy}","received_events_url":"https://api.github.com/users/jpages/received_events","type":"User","site_admin":false}},{"total":94,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":277,"d":24,"c":3},{"w":1367712000,"a":9,"d":0,"c":1},{"w":1368316800,"a":2,"d":2,"c":1},{"w":1368921600,"a":1271,"d":163,"c":18},{"w":1369526400,"a":260,"d":73,"c":8},{"w":1370131200,"a":8,"d":8,"c":1},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":1249,"d":5,"c":52},{"w":1372550400,"a":198,"d":27,"c":10},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"StefanLage","id":3008132,"node_id":"MDQ6VXNlcjMwMDgxMzI=","avatar_url":"https://avatars1.githubusercontent.com/u/3008132?v=4","gravatar_id":"","url":"https://api.github.com/users/StefanLage","html_url":"https://github.com/StefanLage","followers_url":"https://api.github.com/users/StefanLage/followers","following_url":"https://api.github.com/users/StefanLage/following{/other_user}","gists_url":"https://api.github.com/users/StefanLage/gists{/gist_id}","starred_url":"https://api.github.com/users/StefanLage/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/StefanLage/subscriptions","organizations_url":"https://api.github.com/users/StefanLage/orgs","repos_url":"https://api.github.com/users/StefanLage/repos","events_url":"https://api.github.com/users/StefanLage/events{/privacy}","received_events_url":"https://api.github.com/users/StefanLage/received_events","type":"User","site_admin":false}},{"total":97,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":163,"d":55,"c":2},{"w":1421539200,"a":45,"d":17,"c":4},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":145,"d":0,"c":4},{"w":1427587200,"a":47,"d":9,"c":3},{"w":1428192000,"a":55,"d":18,"c":4},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":1608,"d":0,"c":6},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":427,"d":162,"c":5},{"w":1433635200,"a":83,"d":0,"c":3},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":720,"d":158,"c":15},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":47,"d":38,"c":1},{"w":1437868800,"a":14,"d":10,"c":1},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":14,"d":14,"c":1},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":2,"d":3,"c":2},{"w":1442102400,"a":88,"d":2,"c":3},{"w":1442707200,"a":139,"d":78,"c":1},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":160,"d":7,"c":3},{"w":1448755200,"a":117,"d":0,"c":2},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":16790,"d":15794,"c":7},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":17,"d":13,"c":1},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":21,"d":2,"c":1},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":74,"d":0,"c":1},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":241,"d":0,"c":1},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":137,"d":0,"c":1},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":428,"d":0,"c":2},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":576,"d":0,"c":7},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":1,"d":1,"c":1},{"w":1487462400,"a":1,"d":0,"c":1},{"w":1488067200,"a":1,"d":0,"c":1},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":35,"d":98,"c":4},{"w":1491091200,"a":6,"d":6,"c":2},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":335,"d":98,"c":5},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":78,"d":4,"c":2},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"BlackMinou","id":6372714,"node_id":"MDQ6VXNlcjYzNzI3MTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6372714?v=4","gravatar_id":"","url":"https://api.github.com/users/BlackMinou","html_url":"https://github.com/BlackMinou","followers_url":"https://api.github.com/users/BlackMinou/followers","following_url":"https://api.github.com/users/BlackMinou/following{/other_user}","gists_url":"https://api.github.com/users/BlackMinou/gists{/gist_id}","starred_url":"https://api.github.com/users/BlackMinou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BlackMinou/subscriptions","organizations_url":"https://api.github.com/users/BlackMinou/orgs","repos_url":"https://api.github.com/users/BlackMinou/repos","events_url":"https://api.github.com/users/BlackMinou/events{/privacy}","received_events_url":"https://api.github.com/users/BlackMinou/received_events","type":"User","site_admin":false}},{"total":109,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":11,"d":0,"c":1},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":84,"d":3,"c":1},{"w":1245542400,"a":77,"d":9,"c":4},{"w":1246147200,"a":45,"d":0,"c":1},{"w":1246752000,"a":705,"d":747,"c":8},{"w":1247356800,"a":104,"d":83,"c":5},{"w":1247961600,"a":434,"d":111,"c":10},{"w":1248566400,"a":113,"d":6,"c":5},{"w":1249171200,"a":845,"d":719,"c":4},{"w":1249776000,"a":338,"d":72,"c":4},{"w":1250380800,"a":592,"d":117,"c":5},{"w":1250985600,"a":74,"d":63,"c":5},{"w":1251590400,"a":8,"d":0,"c":2},{"w":1252195200,"a":43,"d":47,"c":4},{"w":1252800000,"a":97,"d":31,"c":5},{"w":1253404800,"a":617,"d":3450,"c":6},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":332,"d":3,"c":7},{"w":1256428800,"a":1,"d":0,"c":1},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":145,"d":0,"c":3},{"w":1258848000,"a":113,"d":212,"c":7},{"w":1259452800,"a":357,"d":48,"c":7},{"w":1260057600,"a":104,"d":0,"c":1},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":4,"d":2,"c":2},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":66,"d":6,"c":5},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":7,"d":4,"c":3},{"w":1295740800,"a":5,"d":3,"c":1},{"w":1296345600,"a":22,"d":1,"c":1},{"w":1296950400,"a":1,"d":1,"c":1},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":0,"d":0,"c":0},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":0,"d":0,"c":0},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":0,"d":0,"c":0},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":0,"d":0,"c":0},{"w":1417910400,"a":0,"d":0,"c":0},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":0,"d":0,"c":0},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":0,"d":0,"c":0},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":0,"d":0,"c":0},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"calestar","id":388096,"node_id":"MDQ6VXNlcjM4ODA5Ng==","avatar_url":"https://avatars1.githubusercontent.com/u/388096?v=4","gravatar_id":"","url":"https://api.github.com/users/calestar","html_url":"https://github.com/calestar","followers_url":"https://api.github.com/users/calestar/followers","following_url":"https://api.github.com/users/calestar/following{/other_user}","gists_url":"https://api.github.com/users/calestar/gists{/gist_id}","starred_url":"https://api.github.com/users/calestar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/calestar/subscriptions","organizations_url":"https://api.github.com/users/calestar/orgs","repos_url":"https://api.github.com/users/calestar/repos","events_url":"https://api.github.com/users/calestar/events{/privacy}","received_events_url":"https://api.github.com/users/calestar/received_events","type":"User","site_admin":false}},{"total":315,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":0,"d":0,"c":0},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":0,"d":0,"c":0},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":0,"d":0,"c":0},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":0,"d":0,"c":0},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":0,"d":0,"c":0},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":0,"d":0,"c":0},{"w":1392508800,"a":0,"d":0,"c":0},{"w":1393113600,"a":0,"d":0,"c":0},{"w":1393718400,"a":0,"d":0,"c":0},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":0,"c":0},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":0,"d":0,"c":0},{"w":1399161600,"a":0,"d":0,"c":0},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":0,"d":0,"c":0},{"w":1402185600,"a":0,"d":0,"c":0},{"w":1402790400,"a":0,"d":0,"c":0},{"w":1403395200,"a":0,"d":0,"c":0},{"w":1404000000,"a":0,"d":0,"c":0},{"w":1404604800,"a":0,"d":0,"c":0},{"w":1405209600,"a":0,"d":0,"c":0},{"w":1405814400,"a":0,"d":0,"c":0},{"w":1406419200,"a":0,"d":0,"c":0},{"w":1407024000,"a":0,"d":0,"c":0},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":0,"d":0,"c":0},{"w":1409443200,"a":0,"d":0,"c":0},{"w":1410048000,"a":145,"d":89,"c":2},{"w":1410652800,"a":4047,"d":3,"c":3},{"w":1411257600,"a":755,"d":0,"c":1},{"w":1411862400,"a":364,"d":33,"c":4},{"w":1412467200,"a":1644,"d":18,"c":3},{"w":1413072000,"a":22,"d":17,"c":3},{"w":1413676800,"a":149,"d":18,"c":7},{"w":1414281600,"a":276,"d":7,"c":7},{"w":1414886400,"a":3369,"d":195,"c":21},{"w":1415491200,"a":348,"d":593,"c":12},{"w":1416096000,"a":453,"d":59,"c":12},{"w":1416700800,"a":13960,"d":302,"c":33},{"w":1417305600,"a":8579,"d":141,"c":24},{"w":1417910400,"a":5797,"d":397,"c":33},{"w":1418515200,"a":3721,"d":2880,"c":37},{"w":1419120000,"a":0,"d":0,"c":0},{"w":1419724800,"a":39,"d":0,"c":1},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":0,"d":0,"c":0},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":0,"d":0,"c":0},{"w":1422748800,"a":0,"d":0,"c":0},{"w":1423353600,"a":0,"d":0,"c":0},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":0,"d":0,"c":0},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":0,"d":0,"c":0},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":0,"d":0,"c":0},{"w":1431216000,"a":0,"d":0,"c":0},{"w":1431820800,"a":0,"d":0,"c":0},{"w":1432425600,"a":0,"d":0,"c":0},{"w":1433030400,"a":0,"d":0,"c":0},{"w":1433635200,"a":0,"d":0,"c":0},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":0,"d":0,"c":0},{"w":1436054400,"a":0,"d":0,"c":0},{"w":1436659200,"a":0,"d":0,"c":0},{"w":1437264000,"a":0,"d":0,"c":0},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":0,"d":0,"c":0},{"w":1439078400,"a":0,"d":0,"c":0},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":0,"c":0},{"w":1441497600,"a":0,"d":0,"c":0},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":0,"d":0,"c":0},{"w":1445731200,"a":0,"d":0,"c":0},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":0,"d":0,"c":0},{"w":1448755200,"a":0,"d":0,"c":0},{"w":1449360000,"a":0,"d":0,"c":0},{"w":1449964800,"a":0,"d":0,"c":0},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":0,"d":0,"c":0},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":1,"d":1,"c":1},{"w":1463270400,"a":0,"d":0,"c":0},{"w":1463875200,"a":26,"d":12,"c":2},{"w":1464480000,"a":2,"d":5,"c":2},{"w":1465084800,"a":143,"d":10,"c":3},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":4,"d":8,"c":4},{"w":1466899200,"a":7,"d":7,"c":5},{"w":1467504000,"a":11,"d":11,"c":5},{"w":1468108800,"a":8,"d":4,"c":2},{"w":1468713600,"a":5,"d":9,"c":1},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":41,"d":12,"c":6},{"w":1470528000,"a":51,"d":0,"c":2},{"w":1471132800,"a":1,"d":7,"c":2},{"w":1471737600,"a":125,"d":35,"c":5},{"w":1472342400,"a":3,"d":3,"c":1},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":1,"d":1,"c":1},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":19,"d":24,"c":7},{"w":1490486400,"a":5,"d":4,"c":2},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":693,"d":13,"c":2},{"w":1494115200,"a":16,"d":7,"c":3},{"w":1494720000,"a":40,"d":26,"c":8},{"w":1495324800,"a":58,"d":27,"c":6},{"w":1495929600,"a":187,"d":105,"c":15},{"w":1496534400,"a":17101,"d":16543,"c":15},{"w":1497139200,"a":88,"d":27,"c":9},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":555,"d":215,"c":2},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":5,"d":0,"c":1},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":0,"c":0},{"w":1525564800,"a":0,"d":0,"c":0},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"jcbrinfo","id":6044484,"node_id":"MDQ6VXNlcjYwNDQ0ODQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6044484?v=4","gravatar_id":"","url":"https://api.github.com/users/jcbrinfo","html_url":"https://github.com/jcbrinfo","followers_url":"https://api.github.com/users/jcbrinfo/followers","following_url":"https://api.github.com/users/jcbrinfo/following{/other_user}","gists_url":"https://api.github.com/users/jcbrinfo/gists{/gist_id}","starred_url":"https://api.github.com/users/jcbrinfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcbrinfo/subscriptions","organizations_url":"https://api.github.com/users/jcbrinfo/orgs","repos_url":"https://api.github.com/users/jcbrinfo/repos","events_url":"https://api.github.com/users/jcbrinfo/events{/privacy}","received_events_url":"https://api.github.com/users/jcbrinfo/received_events","type":"User","site_admin":false}},{"total":611,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":0,"d":0,"c":0},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":0,"d":0,"c":0},{"w":1329004800,"a":0,"d":0,"c":0},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":0,"d":0,"c":0},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":0,"d":0,"c":0},{"w":1359244800,"a":0,"d":0,"c":0},{"w":1359849600,"a":0,"d":0,"c":0},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":0,"d":0,"c":0},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":309,"d":3,"c":13},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":184,"d":0,"c":6},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":0,"d":0,"c":0},{"w":1370131200,"a":0,"d":0,"c":0},{"w":1370736000,"a":0,"d":0,"c":0},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":0,"d":0,"c":0},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":0,"d":0,"c":0},{"w":1375574400,"a":0,"d":0,"c":0},{"w":1376179200,"a":0,"d":0,"c":0},{"w":1376784000,"a":0,"d":0,"c":0},{"w":1377388800,"a":87032,"d":62035,"c":7},{"w":1377993600,"a":95,"d":14,"c":3},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":33,"d":21,"c":2},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":68,"d":0,"c":1},{"w":1381622400,"a":0,"d":0,"c":0},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":0,"d":0,"c":0},{"w":1384041600,"a":44,"d":26,"c":2},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":330,"d":85,"c":8},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":168,"d":15,"c":3},{"w":1391299200,"a":0,"d":0,"c":0},{"w":1391904000,"a":242,"d":37,"c":4},{"w":1392508800,"a":169,"d":232,"c":3},{"w":1393113600,"a":175,"d":176,"c":5},{"w":1393718400,"a":311,"d":266,"c":11},{"w":1394323200,"a":0,"d":0,"c":0},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":699,"d":123,"c":15},{"w":1396137600,"a":532,"d":4,"c":4},{"w":1396742400,"a":237,"d":79,"c":10},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":0,"d":0,"c":0},{"w":1398556800,"a":391,"d":875,"c":11},{"w":1399161600,"a":1,"d":0,"c":1},{"w":1399766400,"a":53,"d":18,"c":2},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":0,"d":0,"c":0},{"w":1401580800,"a":1234,"d":1084,"c":30},{"w":1402185600,"a":119,"d":6,"c":4},{"w":1402790400,"a":152,"d":200,"c":3},{"w":1403395200,"a":635,"d":132,"c":10},{"w":1404000000,"a":430,"d":0,"c":1},{"w":1404604800,"a":6,"d":0,"c":1},{"w":1405209600,"a":53,"d":0,"c":1},{"w":1405814400,"a":480,"d":4,"c":16},{"w":1406419200,"a":647,"d":1,"c":6},{"w":1407024000,"a":732,"d":14,"c":8},{"w":1407628800,"a":3,"d":3,"c":1},{"w":1408233600,"a":643,"d":0,"c":4},{"w":1408838400,"a":192,"d":29,"c":9},{"w":1409443200,"a":20,"d":1415,"c":2},{"w":1410048000,"a":208,"d":122,"c":2},{"w":1410652800,"a":394,"d":6,"c":6},{"w":1411257600,"a":612,"d":9,"c":5},{"w":1411862400,"a":1158,"d":0,"c":4},{"w":1412467200,"a":141,"d":85,"c":6},{"w":1413072000,"a":364,"d":115,"c":4},{"w":1413676800,"a":1275,"d":0,"c":3},{"w":1414281600,"a":110,"d":39,"c":8},{"w":1414886400,"a":10093,"d":496,"c":3},{"w":1415491200,"a":287,"d":74,"c":5},{"w":1416096000,"a":113,"d":24,"c":2},{"w":1416700800,"a":0,"d":0,"c":0},{"w":1417305600,"a":96,"d":25,"c":2},{"w":1417910400,"a":183,"d":190,"c":5},{"w":1418515200,"a":0,"d":0,"c":0},{"w":1419120000,"a":7,"d":5,"c":1},{"w":1419724800,"a":0,"d":0,"c":0},{"w":1420329600,"a":0,"d":0,"c":0},{"w":1420934400,"a":98,"d":60,"c":4},{"w":1421539200,"a":0,"d":0,"c":0},{"w":1422144000,"a":8,"d":12,"c":2},{"w":1422748800,"a":31,"d":29,"c":4},{"w":1423353600,"a":442,"d":442,"c":2},{"w":1423958400,"a":0,"d":0,"c":0},{"w":1424563200,"a":0,"d":0,"c":0},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":752,"d":644,"c":4},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":613,"d":13,"c":5},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":112,"d":8,"c":3},{"w":1431216000,"a":423,"d":359,"c":7},{"w":1431820800,"a":216,"d":147,"c":3},{"w":1432425600,"a":30638,"d":27245,"c":16},{"w":1433030400,"a":5153,"d":6309,"c":8},{"w":1433635200,"a":857,"d":0,"c":3},{"w":1434240000,"a":25249,"d":18,"c":5},{"w":1434844800,"a":0,"d":0,"c":0},{"w":1435449600,"a":235,"d":0,"c":1},{"w":1436054400,"a":1193,"d":453,"c":15},{"w":1436659200,"a":12,"d":2,"c":2},{"w":1437264000,"a":1135,"d":319,"c":6},{"w":1437868800,"a":1159,"d":1207,"c":13},{"w":1438473600,"a":14776,"d":16925,"c":19},{"w":1439078400,"a":1734,"d":358,"c":16},{"w":1439683200,"a":47210,"d":536,"c":6},{"w":1440288000,"a":103,"d":15,"c":6},{"w":1440892800,"a":97688,"d":46046,"c":6},{"w":1441497600,"a":321,"d":166,"c":12},{"w":1442102400,"a":256,"d":139,"c":5},{"w":1442707200,"a":344,"d":254,"c":7},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":0,"d":0,"c":0},{"w":1445126400,"a":112,"d":0,"c":2},{"w":1445731200,"a":143,"d":60,"c":6},{"w":1446336000,"a":4015,"d":3915,"c":4},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":21,"d":18,"c":3},{"w":1448150400,"a":1930,"d":1045,"c":10},{"w":1448755200,"a":73,"d":7,"c":1},{"w":1449360000,"a":1167,"d":599,"c":22},{"w":1449964800,"a":555,"d":446,"c":12},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":15,"d":1,"c":1},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":509,"d":26,"c":5},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":161,"d":33,"c":1},{"w":1460246400,"a":679,"d":0,"c":2},{"w":1460851200,"a":5551,"d":24,"c":6},{"w":1461456000,"a":321,"d":597,"c":8},{"w":1462060800,"a":378,"d":125,"c":13},{"w":1462665600,"a":280,"d":1,"c":5},{"w":1463270400,"a":216,"d":103,"c":8},{"w":1463875200,"a":81,"d":0,"c":5},{"w":1464480000,"a":0,"d":0,"c":0},{"w":1465084800,"a":235,"d":199,"c":4},{"w":1465689600,"a":37,"d":60,"c":4},{"w":1466294400,"a":0,"d":0,"c":0},{"w":1466899200,"a":34,"d":1,"c":2},{"w":1467504000,"a":43,"d":1094,"c":5},{"w":1468108800,"a":307,"d":146,"c":1},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":0,"d":0,"c":0},{"w":1471132800,"a":0,"d":0,"c":0},{"w":1471737600,"a":10,"d":4,"c":2},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":36,"d":0,"c":2},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":34,"d":3,"c":2},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":6,"d":4,"c":1},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":0,"d":0,"c":0},{"w":1486252800,"a":0,"d":0,"c":0},{"w":1486857600,"a":0,"d":0,"c":0},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":0,"d":0,"c":0},{"w":1488672000,"a":0,"d":0,"c":0},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":11,"d":1,"c":2},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":0,"d":0,"c":0},{"w":1497139200,"a":0,"d":0,"c":0},{"w":1497744000,"a":0,"d":0,"c":0},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":0,"d":0,"c":0},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":0,"d":0,"c":0},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":0,"d":0,"c":0},{"w":1511654400,"a":0,"d":0,"c":0},{"w":1512259200,"a":0,"d":0,"c":0},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":0,"d":0,"c":0},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":131,"d":99,"c":3},{"w":1522540800,"a":92,"d":60,"c":4},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":82,"d":34,"c":1},{"w":1524960000,"a":156,"d":105,"c":3},{"w":1525564800,"a":512,"d":7957,"c":15},{"w":1526169600,"a":564,"d":749,"c":2},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":18,"d":53,"c":1},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"R4PaSs","id":1444825,"node_id":"MDQ6VXNlcjE0NDQ4MjU=","avatar_url":"https://avatars3.githubusercontent.com/u/1444825?v=4","gravatar_id":"","url":"https://api.github.com/users/R4PaSs","html_url":"https://github.com/R4PaSs","followers_url":"https://api.github.com/users/R4PaSs/followers","following_url":"https://api.github.com/users/R4PaSs/following{/other_user}","gists_url":"https://api.github.com/users/R4PaSs/gists{/gist_id}","starred_url":"https://api.github.com/users/R4PaSs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/R4PaSs/subscriptions","organizations_url":"https://api.github.com/users/R4PaSs/orgs","repos_url":"https://api.github.com/users/R4PaSs/repos","events_url":"https://api.github.com/users/R4PaSs/events{/privacy}","received_events_url":"https://api.github.com/users/R4PaSs/received_events","type":"User","site_admin":false}},{"total":2033,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":0,"d":0,"c":0},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":0,"d":0,"c":0},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":0,"d":0,"c":0},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":2380,"d":0,"c":1},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":0,"d":0,"c":0},{"w":1301184000,"a":94,"d":85,"c":1},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":26,"d":23,"c":5},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":119,"d":7,"c":1},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":0,"c":0},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":636,"d":17,"c":2},{"w":1329004800,"a":101,"d":3,"c":3},{"w":1329609600,"a":0,"d":0,"c":0},{"w":1330214400,"a":0,"d":0,"c":0},{"w":1330819200,"a":0,"d":0,"c":0},{"w":1331424000,"a":0,"d":0,"c":0},{"w":1332028800,"a":0,"d":0,"c":0},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":1734,"d":1462,"c":3},{"w":1335052800,"a":71,"d":37,"c":4},{"w":1335657600,"a":248,"d":65,"c":4},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":0,"d":0,"c":0},{"w":1338681600,"a":0,"d":0,"c":0},{"w":1339286400,"a":1,"d":1,"c":1},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":0,"d":0,"c":0},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":0,"d":0,"c":0},{"w":1348963200,"a":1163,"d":3,"c":4},{"w":1349568000,"a":450,"d":1,"c":1},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":752,"d":32,"c":4},{"w":1354406400,"a":3160,"d":635,"c":32},{"w":1355011200,"a":1374,"d":255,"c":12},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":137,"d":487,"c":4},{"w":1359244800,"a":3011,"d":2975,"c":1},{"w":1359849600,"a":1657,"d":2297,"c":37},{"w":1360454400,"a":91,"d":0,"c":1},{"w":1361059200,"a":110,"d":0,"c":1},{"w":1361664000,"a":1244,"d":1235,"c":10},{"w":1362268800,"a":580,"d":618,"c":26},{"w":1362873600,"a":49,"d":22,"c":3},{"w":1363478400,"a":0,"d":0,"c":0},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":0,"d":0,"c":0},{"w":1368921600,"a":0,"d":0,"c":0},{"w":1369526400,"a":89,"d":16,"c":2},{"w":1370131200,"a":104,"d":0,"c":1},{"w":1370736000,"a":219,"d":0,"c":2},{"w":1371340800,"a":1492,"d":664,"c":23},{"w":1371945600,"a":16,"d":16,"c":2},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":224,"d":153,"c":6},{"w":1373760000,"a":3264,"d":2771,"c":26},{"w":1374364800,"a":769,"d":814,"c":20},{"w":1374969600,"a":2488,"d":2365,"c":25},{"w":1375574400,"a":252,"d":375,"c":6},{"w":1376179200,"a":495,"d":285,"c":2},{"w":1376784000,"a":3557,"d":1319,"c":1},{"w":1377388800,"a":3320,"d":1807,"c":15},{"w":1377993600,"a":57,"d":133,"c":2},{"w":1378598400,"a":548,"d":294,"c":7},{"w":1379203200,"a":621,"d":549,"c":2},{"w":1379808000,"a":7,"d":7,"c":1},{"w":1380412800,"a":343,"d":0,"c":1},{"w":1381017600,"a":1682,"d":1264,"c":3},{"w":1381622400,"a":862,"d":54,"c":2},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":0,"d":0,"c":0},{"w":1383436800,"a":5668,"d":9764,"c":5},{"w":1384041600,"a":0,"d":0,"c":0},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":0,"d":0,"c":0},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":272,"d":116,"c":4},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":102,"d":83,"c":13},{"w":1391299200,"a":2371,"d":2319,"c":6},{"w":1391904000,"a":3363,"d":3117,"c":16},{"w":1392508800,"a":3688,"d":2787,"c":10},{"w":1393113600,"a":1734,"d":1361,"c":14},{"w":1393718400,"a":1888,"d":930,"c":19},{"w":1394323200,"a":1,"d":1,"c":1},{"w":1394928000,"a":0,"d":0,"c":0},{"w":1395532800,"a":229,"d":13,"c":10},{"w":1396137600,"a":0,"d":0,"c":0},{"w":1396742400,"a":0,"d":1,"c":1},{"w":1397347200,"a":0,"d":0,"c":0},{"w":1397952000,"a":272,"d":89,"c":1},{"w":1398556800,"a":159,"d":987,"c":14},{"w":1399161600,"a":2902,"d":1343,"c":14},{"w":1399766400,"a":0,"d":0,"c":0},{"w":1400371200,"a":0,"d":0,"c":0},{"w":1400976000,"a":1,"d":1,"c":1},{"w":1401580800,"a":9841,"d":3034,"c":10},{"w":1402185600,"a":97,"d":78,"c":1},{"w":1402790400,"a":258,"d":148,"c":12},{"w":1403395200,"a":527,"d":10,"c":8},{"w":1404000000,"a":749,"d":369,"c":9},{"w":1404604800,"a":759,"d":365,"c":6},{"w":1405209600,"a":2442,"d":89,"c":8},{"w":1405814400,"a":1611,"d":32,"c":15},{"w":1406419200,"a":164,"d":1,"c":1},{"w":1407024000,"a":4786,"d":0,"c":2},{"w":1407628800,"a":0,"d":0,"c":0},{"w":1408233600,"a":0,"d":0,"c":0},{"w":1408838400,"a":1119,"d":369,"c":11},{"w":1409443200,"a":5682,"d":265,"c":16},{"w":1410048000,"a":396,"d":227,"c":2},{"w":1410652800,"a":0,"d":0,"c":0},{"w":1411257600,"a":3071,"d":167,"c":21},{"w":1411862400,"a":0,"d":0,"c":0},{"w":1412467200,"a":0,"d":0,"c":0},{"w":1413072000,"a":0,"d":0,"c":0},{"w":1413676800,"a":0,"d":0,"c":0},{"w":1414281600,"a":0,"d":0,"c":0},{"w":1414886400,"a":0,"d":0,"c":0},{"w":1415491200,"a":0,"d":0,"c":0},{"w":1416096000,"a":554,"d":195,"c":36},{"w":1416700800,"a":337,"d":310,"c":10},{"w":1417305600,"a":478,"d":207,"c":12},{"w":1417910400,"a":3429,"d":2789,"c":97},{"w":1418515200,"a":969,"d":32,"c":12},{"w":1419120000,"a":227,"d":46,"c":5},{"w":1419724800,"a":13,"d":6,"c":1},{"w":1420329600,"a":78,"d":111,"c":6},{"w":1420934400,"a":2833,"d":144,"c":15},{"w":1421539200,"a":825,"d":2,"c":7},{"w":1422144000,"a":196,"d":2,"c":3},{"w":1422748800,"a":4244,"d":1754,"c":46},{"w":1423353600,"a":16,"d":16,"c":3},{"w":1423958400,"a":1127,"d":1081,"c":12},{"w":1424563200,"a":4023,"d":2835,"c":37},{"w":1425168000,"a":0,"d":0,"c":0},{"w":1425772800,"a":0,"d":0,"c":0},{"w":1426377600,"a":0,"d":0,"c":0},{"w":1426982400,"a":0,"d":0,"c":0},{"w":1427587200,"a":105,"d":1,"c":1},{"w":1428192000,"a":0,"d":0,"c":0},{"w":1428796800,"a":0,"d":0,"c":0},{"w":1429401600,"a":973,"d":585,"c":28},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":5788,"d":954,"c":27},{"w":1431216000,"a":823,"d":900,"c":18},{"w":1431820800,"a":551,"d":660,"c":33},{"w":1432425600,"a":1856,"d":1294,"c":59},{"w":1433030400,"a":2232,"d":2827,"c":20},{"w":1433635200,"a":2294,"d":239,"c":22},{"w":1434240000,"a":0,"d":0,"c":0},{"w":1434844800,"a":1913,"d":320,"c":13},{"w":1435449600,"a":286,"d":7,"c":6},{"w":1436054400,"a":1184,"d":83,"c":21},{"w":1436659200,"a":1105,"d":23,"c":17},{"w":1437264000,"a":934,"d":0,"c":1},{"w":1437868800,"a":8,"d":4,"c":1},{"w":1438473600,"a":14,"d":4,"c":3},{"w":1439078400,"a":19,"d":16,"c":4},{"w":1439683200,"a":0,"d":0,"c":0},{"w":1440288000,"a":0,"d":0,"c":0},{"w":1440892800,"a":0,"d":2,"c":1},{"w":1441497600,"a":27,"d":10,"c":3},{"w":1442102400,"a":0,"d":0,"c":0},{"w":1442707200,"a":0,"d":0,"c":0},{"w":1443312000,"a":0,"d":0,"c":0},{"w":1443916800,"a":0,"d":0,"c":0},{"w":1444521600,"a":1795,"d":20,"c":21},{"w":1445126400,"a":104,"d":38,"c":4},{"w":1445731200,"a":1,"d":1,"c":1},{"w":1446336000,"a":0,"d":0,"c":0},{"w":1446940800,"a":0,"d":0,"c":0},{"w":1447545600,"a":0,"d":0,"c":0},{"w":1448150400,"a":118,"d":130,"c":4},{"w":1448755200,"a":54,"d":21,"c":5},{"w":1449360000,"a":1338,"d":514,"c":9},{"w":1449964800,"a":1284,"d":839,"c":31},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":0,"d":0,"c":0},{"w":1453593600,"a":0,"d":0,"c":0},{"w":1454198400,"a":0,"d":0,"c":0},{"w":1454803200,"a":0,"d":0,"c":0},{"w":1455408000,"a":0,"d":0,"c":0},{"w":1456012800,"a":0,"d":0,"c":0},{"w":1456617600,"a":0,"d":0,"c":0},{"w":1457222400,"a":0,"d":0,"c":0},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":0,"d":0,"c":0},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":0,"d":0,"c":0},{"w":1460246400,"a":0,"d":0,"c":0},{"w":1460851200,"a":483,"d":102,"c":29},{"w":1461456000,"a":0,"d":0,"c":0},{"w":1462060800,"a":0,"d":0,"c":0},{"w":1462665600,"a":0,"d":0,"c":0},{"w":1463270400,"a":4957,"d":379,"c":39},{"w":1463875200,"a":1621,"d":1054,"c":34},{"w":1464480000,"a":8333,"d":1695,"c":49},{"w":1465084800,"a":1172,"d":380,"c":22},{"w":1465689600,"a":0,"d":0,"c":0},{"w":1466294400,"a":1121,"d":340,"c":14},{"w":1466899200,"a":491,"d":254,"c":4},{"w":1467504000,"a":1244,"d":227,"c":11},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":233,"d":157,"c":3},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":1444,"d":126,"c":17},{"w":1470528000,"a":844,"d":89,"c":7},{"w":1471132800,"a":2977,"d":1625,"c":34},{"w":1471737600,"a":1251,"d":588,"c":32},{"w":1472342400,"a":88,"d":41,"c":5},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":251,"d":315,"c":2},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":72,"d":21,"c":5},{"w":1479600000,"a":10819,"d":0,"c":1},{"w":1480204800,"a":828,"d":179,"c":18},{"w":1480809600,"a":545,"d":468,"c":14},{"w":1481414400,"a":102,"d":59,"c":2},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":38,"d":15,"c":1},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":174,"d":20,"c":5},{"w":1486252800,"a":28,"d":1,"c":4},{"w":1486857600,"a":1072,"d":84,"c":12},{"w":1487462400,"a":133,"d":10,"c":3},{"w":1488067200,"a":7,"d":0,"c":2},{"w":1488672000,"a":3,"d":3,"c":1},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":0,"d":0,"c":0},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":0,"d":0,"c":0},{"w":1492905600,"a":0,"d":0,"c":0},{"w":1493510400,"a":0,"d":0,"c":0},{"w":1494115200,"a":1544,"d":1445,"c":10},{"w":1494720000,"a":690,"d":285,"c":10},{"w":1495324800,"a":209,"d":23,"c":3},{"w":1495929600,"a":9,"d":0,"c":1},{"w":1496534400,"a":2073,"d":1891,"c":41},{"w":1497139200,"a":243,"d":113,"c":12},{"w":1497744000,"a":126,"d":2,"c":3},{"w":1498348800,"a":0,"d":0,"c":0},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":0,"d":0,"c":0},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":1525,"d":735,"c":30},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":462,"d":262,"c":8},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":636,"d":122,"c":10},{"w":1506211200,"a":1669,"d":281,"c":19},{"w":1506816000,"a":2,"d":2,"c":1},{"w":1507420800,"a":209,"d":205,"c":9},{"w":1508025600,"a":324,"d":300,"c":13},{"w":1508630400,"a":12377,"d":11966,"c":35},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":6219,"d":6557,"c":5},{"w":1510444800,"a":40,"d":18,"c":1},{"w":1511049600,"a":1678,"d":758,"c":13},{"w":1511654400,"a":2585,"d":3669,"c":5},{"w":1512259200,"a":26,"d":4,"c":2},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":3,"d":8602,"c":2},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":0,"c":0},{"w":1515888000,"a":1,"d":1,"c":1},{"w":1516492800,"a":58,"d":43,"c":3},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":0,"d":0,"c":0},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":0,"d":0,"c":0},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":18748,"d":14905,"c":40},{"w":1525564800,"a":2002,"d":483,"c":33},{"w":1526169600,"a":3526,"d":1969,"c":48},{"w":1526774400,"a":0,"d":0,"c":0},{"w":1527379200,"a":19054,"d":2465,"c":37},{"w":1527984000,"a":0,"d":0,"c":0},{"w":1528588800,"a":915,"d":995,"c":23},{"w":1529193600,"a":11045,"d":10671,"c":11},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":0,"d":0,"c":0},{"w":1550966400,"a":0,"d":0,"c":0},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":843,"d":95,"c":13},{"w":1560643200,"a":960,"d":4297,"c":5},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false}},{"total":3265,"weeks":[{"w":1215302400,"a":0,"d":0,"c":0},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":0,"d":0,"c":0},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":0,"d":0,"c":0},{"w":1226793600,"a":0,"d":0,"c":0},{"w":1227398400,"a":0,"d":0,"c":0},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":0,"d":0,"c":0},{"w":1230422400,"a":0,"d":0,"c":0},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":0,"d":0,"c":0},{"w":1232841600,"a":0,"d":0,"c":0},{"w":1233446400,"a":0,"d":0,"c":0},{"w":1234051200,"a":0,"d":0,"c":0},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":0,"d":0,"c":0},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":0,"d":0,"c":0},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":0,"d":0,"c":0},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":0,"d":0,"c":0},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":0,"d":0,"c":0},{"w":1244332800,"a":0,"d":0,"c":0},{"w":1244937600,"a":0,"d":0,"c":0},{"w":1245542400,"a":0,"d":0,"c":0},{"w":1246147200,"a":0,"d":0,"c":0},{"w":1246752000,"a":0,"d":0,"c":0},{"w":1247356800,"a":559,"d":0,"c":1},{"w":1247961600,"a":0,"d":0,"c":0},{"w":1248566400,"a":0,"d":0,"c":0},{"w":1249171200,"a":0,"d":0,"c":0},{"w":1249776000,"a":0,"d":0,"c":0},{"w":1250380800,"a":0,"d":0,"c":0},{"w":1250985600,"a":0,"d":0,"c":0},{"w":1251590400,"a":0,"d":0,"c":0},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":0,"d":0,"c":0},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":18,"d":2,"c":2},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":0,"d":0,"c":0},{"w":1263081600,"a":0,"d":0,"c":0},{"w":1263686400,"a":0,"d":0,"c":0},{"w":1264291200,"a":0,"d":0,"c":0},{"w":1264896000,"a":0,"d":0,"c":0},{"w":1265500800,"a":0,"d":0,"c":0},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":0,"d":0,"c":0},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":0,"d":0,"c":0},{"w":1276992000,"a":0,"d":0,"c":0},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":0,"d":0,"c":0},{"w":1279411200,"a":0,"d":0,"c":0},{"w":1280016000,"a":0,"d":0,"c":0},{"w":1280620800,"a":0,"d":0,"c":0},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":12,"d":2,"c":3},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":0,"d":0,"c":0},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":0,"d":0,"c":0},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":0,"d":0,"c":0},{"w":1295740800,"a":44,"d":3,"c":1},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":0,"d":0,"c":0},{"w":1297555200,"a":0,"d":0,"c":0},{"w":1298160000,"a":0,"d":0,"c":0},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":6,"d":2,"c":1},{"w":1300579200,"a":0,"d":1,"c":1},{"w":1301184000,"a":10,"d":0,"c":1},{"w":1301788800,"a":7,"d":0,"c":1},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":0,"d":0,"c":0},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":23,"d":0,"c":1},{"w":1307836800,"a":593,"d":0,"c":1},{"w":1308441600,"a":0,"d":0,"c":0},{"w":1309046400,"a":0,"d":0,"c":0},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":536,"d":21,"c":3},{"w":1312675200,"a":893,"d":569,"c":6},{"w":1313280000,"a":107301,"d":90129,"c":11},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":9,"d":6,"c":2},{"w":1318723200,"a":0,"d":0,"c":0},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":1,"d":1,"c":1},{"w":1320537600,"a":1,"d":0,"c":1},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":0,"d":0,"c":0},{"w":1322352000,"a":63881,"d":44609,"c":1},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":0,"d":0,"c":0},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":0,"d":0,"c":0},{"w":1327190400,"a":0,"d":0,"c":0},{"w":1327795200,"a":0,"d":0,"c":0},{"w":1328400000,"a":323111,"d":325970,"c":4},{"w":1329004800,"a":225,"d":248,"c":13},{"w":1329609600,"a":248,"d":25,"c":7},{"w":1330214400,"a":12828,"d":3769,"c":10},{"w":1330819200,"a":102,"d":4,"c":2},{"w":1331424000,"a":49,"d":0,"c":1},{"w":1332028800,"a":9,"d":9,"c":1},{"w":1332633600,"a":410,"d":29,"c":2},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":0,"d":0,"c":0},{"w":1334448000,"a":0,"d":0,"c":0},{"w":1335052800,"a":196,"d":104,"c":2},{"w":1335657600,"a":0,"d":0,"c":0},{"w":1336262400,"a":0,"d":0,"c":0},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":0,"d":0,"c":0},{"w":1338076800,"a":233,"d":13,"c":7},{"w":1338681600,"a":65,"d":4,"c":3},{"w":1339286400,"a":0,"d":0,"c":0},{"w":1339891200,"a":0,"d":0,"c":0},{"w":1340496000,"a":45,"d":4,"c":1},{"w":1341100800,"a":0,"d":0,"c":0},{"w":1341705600,"a":14,"d":4,"c":1},{"w":1342310400,"a":0,"d":0,"c":0},{"w":1342915200,"a":0,"d":0,"c":0},{"w":1343520000,"a":0,"d":0,"c":0},{"w":1344124800,"a":0,"d":0,"c":0},{"w":1344729600,"a":0,"d":0,"c":0},{"w":1345334400,"a":0,"d":0,"c":0},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":3,"d":0,"c":1},{"w":1347148800,"a":152,"d":152,"c":1},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":703,"d":1,"c":3},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":0,"d":0,"c":0},{"w":1350172800,"a":0,"d":0,"c":0},{"w":1350777600,"a":0,"d":0,"c":0},{"w":1351382400,"a":0,"d":0,"c":0},{"w":1351987200,"a":0,"d":0,"c":0},{"w":1352592000,"a":0,"d":0,"c":0},{"w":1353196800,"a":0,"d":0,"c":0},{"w":1353801600,"a":0,"d":0,"c":0},{"w":1354406400,"a":0,"d":0,"c":0},{"w":1355011200,"a":0,"d":0,"c":0},{"w":1355616000,"a":0,"d":0,"c":0},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":0,"d":0,"c":0},{"w":1358640000,"a":4043,"d":1,"c":1},{"w":1359244800,"a":21292,"d":15327,"c":6},{"w":1359849600,"a":904,"d":22,"c":7},{"w":1360454400,"a":0,"d":0,"c":0},{"w":1361059200,"a":579,"d":168,"c":5},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":76,"d":68,"c":1},{"w":1362873600,"a":0,"d":0,"c":0},{"w":1363478400,"a":2,"d":1,"c":2},{"w":1364083200,"a":0,"d":0,"c":0},{"w":1364688000,"a":0,"d":0,"c":0},{"w":1365292800,"a":0,"d":0,"c":0},{"w":1365897600,"a":0,"d":0,"c":0},{"w":1366502400,"a":0,"d":0,"c":0},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":0,"d":0,"c":0},{"w":1368316800,"a":2510,"d":2451,"c":7},{"w":1368921600,"a":808,"d":0,"c":4},{"w":1369526400,"a":310,"d":14,"c":6},{"w":1370131200,"a":9,"d":36,"c":2},{"w":1370736000,"a":61,"d":4,"c":3},{"w":1371340800,"a":0,"d":0,"c":0},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":0,"d":0,"c":0},{"w":1373155200,"a":0,"d":0,"c":0},{"w":1373760000,"a":544,"d":1,"c":4},{"w":1374364800,"a":0,"d":0,"c":0},{"w":1374969600,"a":2076,"d":305,"c":14},{"w":1375574400,"a":312,"d":9,"c":7},{"w":1376179200,"a":182,"d":0,"c":1},{"w":1376784000,"a":7853,"d":1097,"c":40},{"w":1377388800,"a":162,"d":147,"c":5},{"w":1377993600,"a":0,"d":0,"c":0},{"w":1378598400,"a":0,"d":0,"c":0},{"w":1379203200,"a":116,"d":9,"c":2},{"w":1379808000,"a":0,"d":0,"c":0},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":1,"d":1,"c":1},{"w":1381622400,"a":542,"d":1031,"c":7},{"w":1382227200,"a":0,"d":0,"c":0},{"w":1382832000,"a":814,"d":84,"c":8},{"w":1383436800,"a":820,"d":815,"c":8},{"w":1384041600,"a":809,"d":23,"c":10},{"w":1384646400,"a":0,"d":0,"c":0},{"w":1385251200,"a":1692,"d":107,"c":18},{"w":1385856000,"a":26,"d":8,"c":2},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":0,"d":0,"c":0},{"w":1389484800,"a":43,"d":6,"c":4},{"w":1390089600,"a":197,"d":104,"c":9},{"w":1390694400,"a":1296,"d":1438,"c":16},{"w":1391299200,"a":19406,"d":384,"c":22},{"w":1391904000,"a":469,"d":47,"c":22},{"w":1392508800,"a":154352,"d":94,"c":17},{"w":1393113600,"a":783,"d":51,"c":18},{"w":1393718400,"a":461,"d":415,"c":39},{"w":1394323200,"a":1322,"d":200,"c":40},{"w":1394928000,"a":136,"d":12,"c":6},{"w":1395532800,"a":0,"d":0,"c":0},{"w":1396137600,"a":208516,"d":168984,"c":49},{"w":1396742400,"a":289,"d":91,"c":12},{"w":1397347200,"a":909,"d":156,"c":13},{"w":1397952000,"a":43082,"d":1872,"c":12},{"w":1398556800,"a":2887,"d":2555,"c":35},{"w":1399161600,"a":267,"d":187,"c":22},{"w":1399766400,"a":252,"d":110,"c":16},{"w":1400371200,"a":7,"d":2,"c":2},{"w":1400976000,"a":428,"d":266,"c":11},{"w":1401580800,"a":603,"d":599,"c":11},{"w":1402185600,"a":4475,"d":4013,"c":20},{"w":1402790400,"a":2124,"d":176,"c":19},{"w":1403395200,"a":263,"d":114,"c":23},{"w":1404000000,"a":1305,"d":6,"c":7},{"w":1404604800,"a":780,"d":276,"c":19},{"w":1405209600,"a":1846,"d":293,"c":25},{"w":1405814400,"a":2986,"d":138,"c":27},{"w":1406419200,"a":1460,"d":42,"c":23},{"w":1407024000,"a":1259,"d":364,"c":21},{"w":1407628800,"a":64,"d":40,"c":5},{"w":1408233600,"a":128,"d":0,"c":1},{"w":1408838400,"a":261,"d":3,"c":4},{"w":1409443200,"a":657,"d":648,"c":9},{"w":1410048000,"a":2679,"d":2037,"c":13},{"w":1410652800,"a":44,"d":18,"c":8},{"w":1411257600,"a":351,"d":23,"c":6},{"w":1411862400,"a":144,"d":82,"c":9},{"w":1412467200,"a":111,"d":4,"c":5},{"w":1413072000,"a":59,"d":49,"c":4},{"w":1413676800,"a":364,"d":343,"c":3},{"w":1414281600,"a":1335,"d":89,"c":19},{"w":1414886400,"a":281,"d":76,"c":17},{"w":1415491200,"a":300,"d":98,"c":16},{"w":1416096000,"a":322,"d":62,"c":16},{"w":1416700800,"a":1589,"d":81,"c":32},{"w":1417305600,"a":655,"d":121,"c":31},{"w":1417910400,"a":689,"d":93,"c":32},{"w":1418515200,"a":338,"d":249,"c":11},{"w":1419120000,"a":707,"d":344,"c":25},{"w":1419724800,"a":888,"d":130,"c":21},{"w":1420329600,"a":936,"d":701,"c":27},{"w":1420934400,"a":1230,"d":982,"c":7},{"w":1421539200,"a":175,"d":68,"c":8},{"w":1422144000,"a":454,"d":383,"c":21},{"w":1422748800,"a":605,"d":111,"c":14},{"w":1423353600,"a":126,"d":5,"c":6},{"w":1423958400,"a":85,"d":69,"c":6},{"w":1424563200,"a":68,"d":47,"c":3},{"w":1425168000,"a":570,"d":21,"c":9},{"w":1425772800,"a":615,"d":206,"c":17},{"w":1426377600,"a":191,"d":65,"c":11},{"w":1426982400,"a":929,"d":35,"c":8},{"w":1427587200,"a":308,"d":187,"c":11},{"w":1428192000,"a":70,"d":155,"c":9},{"w":1428796800,"a":214,"d":17,"c":9},{"w":1429401600,"a":682,"d":58,"c":8},{"w":1430006400,"a":11,"d":14,"c":3},{"w":1430611200,"a":3537,"d":3013,"c":49},{"w":1431216000,"a":497,"d":260,"c":20},{"w":1431820800,"a":2823,"d":888,"c":36},{"w":1432425600,"a":2419,"d":2064,"c":58},{"w":1433030400,"a":1415,"d":1226,"c":38},{"w":1433635200,"a":213,"d":390,"c":28},{"w":1434240000,"a":771,"d":714,"c":35},{"w":1434844800,"a":194,"d":196,"c":19},{"w":1435449600,"a":3535,"d":217,"c":45},{"w":1436054400,"a":306,"d":134,"c":16},{"w":1436659200,"a":288,"d":97,"c":12},{"w":1437264000,"a":1292,"d":932,"c":72},{"w":1437868800,"a":3147,"d":448,"c":59},{"w":1438473600,"a":501,"d":143,"c":23},{"w":1439078400,"a":7095,"d":4964,"c":24},{"w":1439683200,"a":612,"d":668,"c":24},{"w":1440288000,"a":2282,"d":1995,"c":51},{"w":1440892800,"a":399,"d":128,"c":32},{"w":1441497600,"a":412,"d":118,"c":24},{"w":1442102400,"a":1516,"d":154509,"c":34},{"w":1442707200,"a":366,"d":18,"c":4},{"w":1443312000,"a":906,"d":184,"c":13},{"w":1443916800,"a":88,"d":58,"c":4},{"w":1444521600,"a":30,"d":26,"c":6},{"w":1445126400,"a":151,"d":15,"c":7},{"w":1445731200,"a":686,"d":70,"c":17},{"w":1446336000,"a":190,"d":29,"c":18},{"w":1446940800,"a":2767,"d":141,"c":28},{"w":1447545600,"a":555,"d":373,"c":27},{"w":1448150400,"a":585,"d":72,"c":18},{"w":1448755200,"a":916,"d":79,"c":14},{"w":1449360000,"a":5647,"d":170,"c":24},{"w":1449964800,"a":18630,"d":5195,"c":20},{"w":1450569600,"a":5,"d":0,"c":1},{"w":1451174400,"a":14491,"d":37,"c":6},{"w":1451779200,"a":196,"d":11,"c":3},{"w":1452384000,"a":2362,"d":926,"c":14},{"w":1452988800,"a":1087,"d":72,"c":29},{"w":1453593600,"a":162,"d":84,"c":8},{"w":1454198400,"a":13806,"d":145,"c":12},{"w":1454803200,"a":1441,"d":145,"c":29},{"w":1455408000,"a":559,"d":146,"c":20},{"w":1456012800,"a":69,"d":31,"c":7},{"w":1456617600,"a":58,"d":3,"c":4},{"w":1457222400,"a":1834,"d":61,"c":14},{"w":1457827200,"a":658,"d":74,"c":23},{"w":1458432000,"a":226,"d":37,"c":10},{"w":1459036800,"a":1051,"d":97,"c":14},{"w":1459641600,"a":284,"d":159,"c":25},{"w":1460246400,"a":128,"d":34,"c":11},{"w":1460851200,"a":1150,"d":196,"c":21},{"w":1461456000,"a":44,"d":20,"c":3},{"w":1462060800,"a":264,"d":157,"c":10},{"w":1462665600,"a":182,"d":33,"c":16},{"w":1463270400,"a":2661,"d":1745,"c":22},{"w":1463875200,"a":368,"d":379,"c":11},{"w":1464480000,"a":47,"d":28,"c":3},{"w":1465084800,"a":0,"d":0,"c":0},{"w":1465689600,"a":126,"d":108,"c":14},{"w":1466294400,"a":835,"d":501,"c":33},{"w":1466899200,"a":37,"d":24,"c":5},{"w":1467504000,"a":0,"d":0,"c":0},{"w":1468108800,"a":0,"d":0,"c":0},{"w":1468713600,"a":560,"d":153,"c":15},{"w":1469318400,"a":90,"d":43,"c":8},{"w":1469923200,"a":131,"d":41,"c":13},{"w":1470528000,"a":674,"d":532,"c":24},{"w":1471132800,"a":166,"d":40,"c":11},{"w":1471737600,"a":13,"d":6,"c":5},{"w":1472342400,"a":170,"d":116,"c":15},{"w":1472947200,"a":462,"d":102,"c":26},{"w":1473552000,"a":1385,"d":1485,"c":17},{"w":1474156800,"a":137,"d":75,"c":13},{"w":1474761600,"a":260,"d":71,"c":15},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":588,"d":96,"c":27},{"w":1476576000,"a":57,"d":2,"c":4},{"w":1477180800,"a":17,"d":8,"c":3},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":4,"d":1747,"c":1},{"w":1478995200,"a":64,"d":58,"c":6},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":474,"d":472,"c":3},{"w":1481414400,"a":82,"d":82,"c":2},{"w":1482019200,"a":147,"d":154,"c":2},{"w":1482624000,"a":10,"d":5,"c":2},{"w":1483228800,"a":75,"d":42,"c":1},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":235,"d":25,"c":6},{"w":1486252800,"a":550,"d":377,"c":10},{"w":1486857600,"a":30,"d":7,"c":1},{"w":1487462400,"a":474,"d":223,"c":16},{"w":1488067200,"a":518587,"d":350506,"c":5},{"w":1488672000,"a":33,"d":10,"c":3},{"w":1489276800,"a":225,"d":16,"c":9},{"w":1489881600,"a":1061,"d":166,"c":7},{"w":1490486400,"a":358,"d":9,"c":6},{"w":1491091200,"a":3958,"d":2635,"c":16},{"w":1491696000,"a":86,"d":31,"c":5},{"w":1492300800,"a":200,"d":14,"c":2},{"w":1492905600,"a":2,"d":3,"c":2},{"w":1493510400,"a":308,"d":128,"c":11},{"w":1494115200,"a":219,"d":190,"c":7},{"w":1494720000,"a":239,"d":125,"c":9},{"w":1495324800,"a":1097,"d":191,"c":10},{"w":1495929600,"a":154,"d":44,"c":7},{"w":1496534400,"a":248,"d":66,"c":11},{"w":1497139200,"a":1647,"d":70,"c":9},{"w":1497744000,"a":874,"d":110,"c":7},{"w":1498348800,"a":2536,"d":2355,"c":15},{"w":1498953600,"a":158,"d":5,"c":4},{"w":1499558400,"a":260,"d":86,"c":11},{"w":1500163200,"a":319,"d":98,"c":15},{"w":1500768000,"a":4165,"d":208,"c":20},{"w":1501372800,"a":1147,"d":1941,"c":8},{"w":1501977600,"a":63,"d":15,"c":3},{"w":1502582400,"a":800,"d":59,"c":6},{"w":1503187200,"a":100,"d":37,"c":8},{"w":1503792000,"a":279,"d":18,"c":7},{"w":1504396800,"a":883,"d":620,"c":21},{"w":1505001600,"a":198,"d":2,"c":5},{"w":1505606400,"a":100,"d":96,"c":5},{"w":1506211200,"a":127,"d":38,"c":10},{"w":1506816000,"a":516,"d":121,"c":12},{"w":1507420800,"a":68,"d":16,"c":4},{"w":1508025600,"a":79,"d":36,"c":7},{"w":1508630400,"a":504,"d":169,"c":6},{"w":1509235200,"a":16,"d":8,"c":4},{"w":1509840000,"a":59,"d":44,"c":9},{"w":1510444800,"a":100,"d":44,"c":10},{"w":1511049600,"a":7,"d":8,"c":2},{"w":1511654400,"a":3,"d":1,"c":1},{"w":1512259200,"a":7,"d":0,"c":2},{"w":1512864000,"a":644,"d":29,"c":14},{"w":1513468800,"a":111,"d":12,"c":5},{"w":1514073600,"a":2,"d":2,"c":1},{"w":1514678400,"a":9,"d":5,"c":2},{"w":1515283200,"a":8,"d":55236,"c":12},{"w":1515888000,"a":47,"d":34,"c":11},{"w":1516492800,"a":69,"d":9269,"c":6},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":736,"d":129,"c":14},{"w":1518912000,"a":1,"d":1,"c":1},{"w":1519516800,"a":910,"d":723,"c":14},{"w":1520121600,"a":96,"d":49,"c":6},{"w":1520726400,"a":51,"d":31,"c":3},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":425,"d":409,"c":5},{"w":1522540800,"a":11,"d":1,"c":1},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":0,"d":640,"c":1},{"w":1525564800,"a":9,"d":6,"c":4},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":70,"d":27,"c":3},{"w":1527379200,"a":0,"d":0,"c":0},{"w":1527984000,"a":230,"d":156,"c":10},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":192,"d":21,"c":6},{"w":1532217600,"a":10,"d":9,"c":2},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":0,"d":0,"c":0},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":107,"d":21,"c":2},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":13,"d":6,"c":1},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":4,"d":9,"c":3},{"w":1550361600,"a":208,"d":59,"c":2},{"w":1550966400,"a":133,"d":84,"c":10},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":0,"d":0,"c":0},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":0,"d":0,"c":0},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"xymus","id":208057,"node_id":"MDQ6VXNlcjIwODA1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/208057?v=4","gravatar_id":"","url":"https://api.github.com/users/xymus","html_url":"https://github.com/xymus","followers_url":"https://api.github.com/users/xymus/followers","following_url":"https://api.github.com/users/xymus/following{/other_user}","gists_url":"https://api.github.com/users/xymus/gists{/gist_id}","starred_url":"https://api.github.com/users/xymus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xymus/subscriptions","organizations_url":"https://api.github.com/users/xymus/orgs","repos_url":"https://api.github.com/users/xymus/repos","events_url":"https://api.github.com/users/xymus/events{/privacy}","received_events_url":"https://api.github.com/users/xymus/received_events","type":"User","site_admin":false}},{"total":4536,"weeks":[{"w":1215302400,"a":336225,"d":0,"c":1},{"w":1215907200,"a":0,"d":0,"c":0},{"w":1216512000,"a":0,"d":0,"c":0},{"w":1217116800,"a":0,"d":0,"c":0},{"w":1217721600,"a":0,"d":0,"c":0},{"w":1218326400,"a":0,"d":0,"c":0},{"w":1218931200,"a":0,"d":0,"c":0},{"w":1219536000,"a":0,"d":0,"c":0},{"w":1220140800,"a":0,"d":0,"c":0},{"w":1220745600,"a":205,"d":4,"c":2},{"w":1221350400,"a":0,"d":0,"c":0},{"w":1221955200,"a":0,"d":0,"c":0},{"w":1222560000,"a":0,"d":0,"c":0},{"w":1223164800,"a":0,"d":0,"c":0},{"w":1223769600,"a":0,"d":0,"c":0},{"w":1224374400,"a":0,"d":0,"c":0},{"w":1224979200,"a":0,"d":0,"c":0},{"w":1225584000,"a":0,"d":0,"c":0},{"w":1226188800,"a":17933,"d":12108,"c":8},{"w":1226793600,"a":5542,"d":5054,"c":1},{"w":1227398400,"a":50883,"d":50865,"c":7},{"w":1228003200,"a":0,"d":0,"c":0},{"w":1228608000,"a":0,"d":0,"c":0},{"w":1229212800,"a":0,"d":0,"c":0},{"w":1229817600,"a":173820,"d":154140,"c":26},{"w":1230422400,"a":378,"d":326,"c":4},{"w":1231027200,"a":0,"d":0,"c":0},{"w":1231632000,"a":0,"d":0,"c":0},{"w":1232236800,"a":33548,"d":10420,"c":21},{"w":1232841600,"a":221249,"d":156096,"c":18},{"w":1233446400,"a":30887,"d":76015,"c":8},{"w":1234051200,"a":188,"d":165,"c":6},{"w":1234656000,"a":0,"d":0,"c":0},{"w":1235260800,"a":105,"d":81,"c":4},{"w":1235865600,"a":0,"d":0,"c":0},{"w":1236470400,"a":0,"d":0,"c":0},{"w":1237075200,"a":0,"d":0,"c":0},{"w":1237680000,"a":24,"d":0,"c":2},{"w":1238284800,"a":0,"d":0,"c":0},{"w":1238889600,"a":133,"d":197,"c":2},{"w":1239494400,"a":0,"d":0,"c":0},{"w":1240099200,"a":0,"d":0,"c":0},{"w":1240704000,"a":0,"d":0,"c":0},{"w":1241308800,"a":0,"d":0,"c":0},{"w":1241913600,"a":0,"d":0,"c":0},{"w":1242518400,"a":17287,"d":11282,"c":4},{"w":1243123200,"a":0,"d":0,"c":0},{"w":1243728000,"a":350,"d":237,"c":6},{"w":1244332800,"a":80928,"d":82623,"c":35},{"w":1244937600,"a":1231,"d":799,"c":24},{"w":1245542400,"a":216695,"d":122952,"c":28},{"w":1246147200,"a":1297,"d":30,"c":12},{"w":1246752000,"a":920,"d":713,"c":21},{"w":1247356800,"a":844,"d":776,"c":5},{"w":1247961600,"a":22770,"d":14816,"c":15},{"w":1248566400,"a":82839,"d":56641,"c":31},{"w":1249171200,"a":18652,"d":17308,"c":13},{"w":1249776000,"a":462,"d":176,"c":13},{"w":1250380800,"a":11327,"d":10145,"c":23},{"w":1250985600,"a":737436,"d":334624,"c":23},{"w":1251590400,"a":6616,"d":6827,"c":5},{"w":1252195200,"a":0,"d":0,"c":0},{"w":1252800000,"a":152,"d":20,"c":2},{"w":1253404800,"a":0,"d":0,"c":0},{"w":1254009600,"a":0,"d":0,"c":0},{"w":1254614400,"a":0,"d":0,"c":0},{"w":1255219200,"a":0,"d":0,"c":0},{"w":1255824000,"a":0,"d":0,"c":0},{"w":1256428800,"a":0,"d":0,"c":0},{"w":1257033600,"a":0,"d":0,"c":0},{"w":1257638400,"a":0,"d":0,"c":0},{"w":1258243200,"a":0,"d":0,"c":0},{"w":1258848000,"a":0,"d":0,"c":0},{"w":1259452800,"a":0,"d":0,"c":0},{"w":1260057600,"a":0,"d":0,"c":0},{"w":1260662400,"a":0,"d":0,"c":0},{"w":1261267200,"a":0,"d":0,"c":0},{"w":1261872000,"a":0,"d":0,"c":0},{"w":1262476800,"a":493,"d":34,"c":8},{"w":1263081600,"a":752,"d":353,"c":9},{"w":1263686400,"a":263,"d":139,"c":9},{"w":1264291200,"a":671,"d":373,"c":5},{"w":1264896000,"a":129,"d":73,"c":1},{"w":1265500800,"a":437,"d":245,"c":5},{"w":1266105600,"a":0,"d":0,"c":0},{"w":1266710400,"a":0,"d":0,"c":0},{"w":1267315200,"a":0,"d":0,"c":0},{"w":1267920000,"a":6935,"d":6847,"c":1},{"w":1268524800,"a":0,"d":0,"c":0},{"w":1269129600,"a":0,"d":0,"c":0},{"w":1269734400,"a":0,"d":0,"c":0},{"w":1270339200,"a":0,"d":0,"c":0},{"w":1270944000,"a":0,"d":0,"c":0},{"w":1271548800,"a":0,"d":0,"c":0},{"w":1272153600,"a":0,"d":0,"c":0},{"w":1272758400,"a":0,"d":0,"c":0},{"w":1273363200,"a":0,"d":0,"c":0},{"w":1273968000,"a":0,"d":0,"c":0},{"w":1274572800,"a":0,"d":0,"c":0},{"w":1275177600,"a":0,"d":0,"c":0},{"w":1275782400,"a":0,"d":0,"c":0},{"w":1276387200,"a":9254,"d":8839,"c":6},{"w":1276992000,"a":21,"d":30,"c":2},{"w":1277596800,"a":0,"d":0,"c":0},{"w":1278201600,"a":0,"d":0,"c":0},{"w":1278806400,"a":153,"d":132,"c":5},{"w":1279411200,"a":235,"d":38,"c":2},{"w":1280016000,"a":20,"d":19,"c":2},{"w":1280620800,"a":25312,"d":66874,"c":7},{"w":1281225600,"a":0,"d":0,"c":0},{"w":1281830400,"a":0,"d":0,"c":0},{"w":1282435200,"a":0,"d":0,"c":0},{"w":1283040000,"a":0,"d":0,"c":0},{"w":1283644800,"a":0,"d":0,"c":0},{"w":1284249600,"a":0,"d":0,"c":0},{"w":1284854400,"a":466,"d":7565,"c":1},{"w":1285459200,"a":0,"d":0,"c":0},{"w":1286064000,"a":0,"d":0,"c":0},{"w":1286668800,"a":0,"d":0,"c":0},{"w":1287273600,"a":0,"d":0,"c":0},{"w":1287878400,"a":0,"d":0,"c":0},{"w":1288483200,"a":0,"d":0,"c":0},{"w":1289088000,"a":0,"d":0,"c":0},{"w":1289692800,"a":0,"d":0,"c":0},{"w":1290297600,"a":0,"d":0,"c":0},{"w":1290902400,"a":0,"d":0,"c":0},{"w":1291507200,"a":0,"d":0,"c":0},{"w":1292112000,"a":2,"d":0,"c":1},{"w":1292716800,"a":0,"d":0,"c":0},{"w":1293321600,"a":0,"d":0,"c":0},{"w":1293926400,"a":4862,"d":3262,"c":5},{"w":1294531200,"a":0,"d":0,"c":0},{"w":1295136000,"a":898,"d":869,"c":4},{"w":1295740800,"a":234514,"d":627606,"c":8},{"w":1296345600,"a":0,"d":0,"c":0},{"w":1296950400,"a":3652,"d":1788,"c":14},{"w":1297555200,"a":12822,"d":10627,"c":12},{"w":1298160000,"a":66,"d":66,"c":1},{"w":1298764800,"a":0,"d":0,"c":0},{"w":1299369600,"a":0,"d":0,"c":0},{"w":1299974400,"a":0,"d":0,"c":0},{"w":1300579200,"a":6529,"d":5282,"c":7},{"w":1301184000,"a":368,"d":1,"c":4},{"w":1301788800,"a":0,"d":0,"c":0},{"w":1302393600,"a":0,"d":0,"c":0},{"w":1302998400,"a":0,"d":0,"c":0},{"w":1303603200,"a":25485,"d":433,"c":5},{"w":1304208000,"a":0,"d":0,"c":0},{"w":1304812800,"a":0,"d":0,"c":0},{"w":1305417600,"a":0,"d":0,"c":0},{"w":1306022400,"a":0,"d":0,"c":0},{"w":1306627200,"a":0,"d":0,"c":0},{"w":1307232000,"a":0,"d":0,"c":0},{"w":1307836800,"a":0,"d":0,"c":0},{"w":1308441600,"a":4,"d":768,"c":1},{"w":1309046400,"a":1,"d":3,"c":2},{"w":1309651200,"a":0,"d":0,"c":0},{"w":1310256000,"a":0,"d":0,"c":0},{"w":1310860800,"a":0,"d":0,"c":0},{"w":1311465600,"a":0,"d":0,"c":0},{"w":1312070400,"a":0,"d":0,"c":0},{"w":1312675200,"a":0,"d":0,"c":0},{"w":1313280000,"a":0,"d":0,"c":0},{"w":1313884800,"a":0,"d":0,"c":0},{"w":1314489600,"a":0,"d":0,"c":0},{"w":1315094400,"a":0,"d":0,"c":0},{"w":1315699200,"a":0,"d":0,"c":0},{"w":1316304000,"a":0,"d":0,"c":0},{"w":1316908800,"a":0,"d":0,"c":0},{"w":1317513600,"a":0,"d":0,"c":0},{"w":1318118400,"a":0,"d":0,"c":0},{"w":1318723200,"a":5,"d":10,"c":1},{"w":1319328000,"a":0,"d":0,"c":0},{"w":1319932800,"a":0,"d":1,"c":1},{"w":1320537600,"a":0,"d":0,"c":0},{"w":1321142400,"a":0,"d":0,"c":0},{"w":1321747200,"a":338,"d":132,"c":5},{"w":1322352000,"a":0,"d":0,"c":0},{"w":1322956800,"a":0,"d":0,"c":0},{"w":1323561600,"a":0,"d":0,"c":0},{"w":1324166400,"a":0,"d":0,"c":0},{"w":1324771200,"a":0,"d":0,"c":0},{"w":1325376000,"a":19,"d":14,"c":5},{"w":1325980800,"a":0,"d":0,"c":0},{"w":1326585600,"a":11,"d":7,"c":1},{"w":1327190400,"a":2,"d":2,"c":1},{"w":1327795200,"a":1670,"d":803,"c":6},{"w":1328400000,"a":307530,"d":304546,"c":17},{"w":1329004800,"a":81421,"d":70183,"c":32},{"w":1329609600,"a":36651,"d":63012,"c":18},{"w":1330214400,"a":5541,"d":5057,"c":7},{"w":1330819200,"a":259,"d":208,"c":3},{"w":1331424000,"a":94,"d":90,"c":2},{"w":1332028800,"a":20,"d":18,"c":2},{"w":1332633600,"a":0,"d":0,"c":0},{"w":1333238400,"a":0,"d":0,"c":0},{"w":1333843200,"a":19504,"d":9297,"c":11},{"w":1334448000,"a":103767,"d":103808,"c":22},{"w":1335052800,"a":1935,"d":1525,"c":17},{"w":1335657600,"a":140,"d":25,"c":15},{"w":1336262400,"a":139,"d":87,"c":5},{"w":1336867200,"a":0,"d":0,"c":0},{"w":1337472000,"a":64,"d":12,"c":3},{"w":1338076800,"a":112,"d":83,"c":6},{"w":1338681600,"a":558,"d":0,"c":1},{"w":1339286400,"a":3,"d":7,"c":3},{"w":1339891200,"a":19,"d":7,"c":5},{"w":1340496000,"a":175,"d":205,"c":8},{"w":1341100800,"a":651,"d":367,"c":9},{"w":1341705600,"a":0,"d":0,"c":0},{"w":1342310400,"a":72,"d":26,"c":7},{"w":1342915200,"a":14,"d":1,"c":2},{"w":1343520000,"a":659,"d":358,"c":21},{"w":1344124800,"a":536,"d":89,"c":21},{"w":1344729600,"a":62,"d":55,"c":6},{"w":1345334400,"a":208,"d":138,"c":16},{"w":1345939200,"a":0,"d":0,"c":0},{"w":1346544000,"a":0,"d":0,"c":0},{"w":1347148800,"a":0,"d":0,"c":0},{"w":1347753600,"a":0,"d":0,"c":0},{"w":1348358400,"a":396,"d":0,"c":3},{"w":1348963200,"a":0,"d":0,"c":0},{"w":1349568000,"a":1,"d":1,"c":1},{"w":1350172800,"a":1797,"d":193,"c":18},{"w":1350777600,"a":1326,"d":176,"c":16},{"w":1351382400,"a":234,"d":77,"c":15},{"w":1351987200,"a":491,"d":275,"c":16},{"w":1352592000,"a":272,"d":83,"c":13},{"w":1353196800,"a":804,"d":124,"c":23},{"w":1353801600,"a":383,"d":582,"c":32},{"w":1354406400,"a":2013,"d":494,"c":48},{"w":1355011200,"a":2630,"d":383,"c":45},{"w":1355616000,"a":40,"d":50,"c":6},{"w":1356220800,"a":0,"d":0,"c":0},{"w":1356825600,"a":0,"d":0,"c":0},{"w":1357430400,"a":0,"d":0,"c":0},{"w":1358035200,"a":538,"d":79,"c":2},{"w":1358640000,"a":263,"d":486,"c":13},{"w":1359244800,"a":128,"d":17,"c":6},{"w":1359849600,"a":68,"d":6,"c":7},{"w":1360454400,"a":142086,"d":108181,"c":2},{"w":1361059200,"a":16804,"d":16808,"c":4},{"w":1361664000,"a":0,"d":0,"c":0},{"w":1362268800,"a":75,"d":50,"c":6},{"w":1362873600,"a":202,"d":4,"c":9},{"w":1363478400,"a":2,"d":0,"c":1},{"w":1364083200,"a":2,"d":6,"c":2},{"w":1364688000,"a":355,"d":228,"c":6},{"w":1365292800,"a":162,"d":48,"c":5},{"w":1365897600,"a":563,"d":465,"c":3},{"w":1366502400,"a":411,"d":362,"c":6},{"w":1367107200,"a":0,"d":0,"c":0},{"w":1367712000,"a":4,"d":0,"c":1},{"w":1368316800,"a":24,"d":33,"c":9},{"w":1368921600,"a":60,"d":25,"c":5},{"w":1369526400,"a":5,"d":4,"c":5},{"w":1370131200,"a":102,"d":59,"c":5},{"w":1370736000,"a":334,"d":181,"c":6},{"w":1371340800,"a":141,"d":49,"c":6},{"w":1371945600,"a":0,"d":0,"c":0},{"w":1372550400,"a":326,"d":98,"c":10},{"w":1373155200,"a":1370,"d":1404,"c":3},{"w":1373760000,"a":31731,"d":18675,"c":35},{"w":1374364800,"a":2568,"d":932,"c":33},{"w":1374969600,"a":127284,"d":76490,"c":26},{"w":1375574400,"a":3972,"d":2139,"c":45},{"w":1376179200,"a":5520,"d":1106,"c":50},{"w":1376784000,"a":62562,"d":39802,"c":36},{"w":1377388800,"a":1481,"d":996,"c":11},{"w":1377993600,"a":13674,"d":13557,"c":11},{"w":1378598400,"a":4,"d":1,"c":2},{"w":1379203200,"a":0,"d":0,"c":0},{"w":1379808000,"a":37,"d":39,"c":1},{"w":1380412800,"a":0,"d":0,"c":0},{"w":1381017600,"a":9,"d":5,"c":3},{"w":1381622400,"a":12202,"d":5909,"c":42},{"w":1382227200,"a":370,"d":82,"c":20},{"w":1382832000,"a":1070,"d":305,"c":27},{"w":1383436800,"a":487,"d":460,"c":12},{"w":1384041600,"a":636818,"d":594910,"c":19},{"w":1384646400,"a":87,"d":71,"c":7},{"w":1385251200,"a":210336,"d":228089,"c":27},{"w":1385856000,"a":0,"d":0,"c":0},{"w":1386460800,"a":0,"d":0,"c":0},{"w":1387065600,"a":0,"d":0,"c":0},{"w":1387670400,"a":0,"d":0,"c":0},{"w":1388275200,"a":0,"d":0,"c":0},{"w":1388880000,"a":8,"d":5,"c":1},{"w":1389484800,"a":99,"d":45,"c":10},{"w":1390089600,"a":0,"d":0,"c":0},{"w":1390694400,"a":685,"d":236,"c":10},{"w":1391299200,"a":564,"d":1426,"c":17},{"w":1391904000,"a":11684,"d":11996,"c":19},{"w":1392508800,"a":211707,"d":222550,"c":17},{"w":1393113600,"a":579,"d":127,"c":18},{"w":1393718400,"a":404,"d":125,"c":19},{"w":1394323200,"a":2656,"d":2219,"c":42},{"w":1394928000,"a":1467,"d":883,"c":56},{"w":1395532800,"a":1058,"d":391,"c":45},{"w":1396137600,"a":521,"d":2391,"c":27},{"w":1396742400,"a":23378,"d":59794,"c":37},{"w":1397347200,"a":14843,"d":15393,"c":30},{"w":1397952000,"a":2564,"d":1433,"c":43},{"w":1398556800,"a":415,"d":322,"c":16},{"w":1399161600,"a":210,"d":21,"c":7},{"w":1399766400,"a":399,"d":142,"c":24},{"w":1400371200,"a":70,"d":573,"c":6},{"w":1400976000,"a":1935,"d":1644,"c":20},{"w":1401580800,"a":628,"d":190,"c":26},{"w":1402185600,"a":4544,"d":4152,"c":43},{"w":1402790400,"a":2955,"d":666,"c":32},{"w":1403395200,"a":2253,"d":1001,"c":9},{"w":1404000000,"a":207,"d":33,"c":9},{"w":1404604800,"a":3331,"d":76,"c":25},{"w":1405209600,"a":13005,"d":16850,"c":46},{"w":1405814400,"a":1066,"d":342,"c":50},{"w":1406419200,"a":426165,"d":564875,"c":22},{"w":1407024000,"a":816,"d":159,"c":25},{"w":1407628800,"a":3221,"d":1678,"c":23},{"w":1408233600,"a":725,"d":516,"c":6},{"w":1408838400,"a":1440,"d":744,"c":37},{"w":1409443200,"a":20046,"d":20565,"c":43},{"w":1410048000,"a":168,"d":135,"c":6},{"w":1410652800,"a":13814,"d":15779,"c":24},{"w":1411257600,"a":7971,"d":13053,"c":41},{"w":1411862400,"a":3018,"d":2603,"c":21},{"w":1412467200,"a":1045,"d":450,"c":37},{"w":1413072000,"a":1453,"d":298,"c":20},{"w":1413676800,"a":16282,"d":10579,"c":13},{"w":1414281600,"a":299636,"d":259415,"c":29},{"w":1414886400,"a":1932,"d":1247,"c":44},{"w":1415491200,"a":412,"d":573,"c":22},{"w":1416096000,"a":597,"d":142,"c":25},{"w":1416700800,"a":947,"d":342,"c":32},{"w":1417305600,"a":1554,"d":1081,"c":63},{"w":1417910400,"a":1537,"d":915,"c":31},{"w":1418515200,"a":8921,"d":7008,"c":58},{"w":1419120000,"a":183,"d":144,"c":11},{"w":1419724800,"a":150,"d":59,"c":17},{"w":1420329600,"a":265,"d":103,"c":21},{"w":1420934400,"a":103,"d":113,"c":5},{"w":1421539200,"a":10,"d":2,"c":4},{"w":1422144000,"a":42,"d":38,"c":7},{"w":1422748800,"a":502669,"d":520115,"c":26},{"w":1423353600,"a":218,"d":37,"c":9},{"w":1423958400,"a":196,"d":12,"c":9},{"w":1424563200,"a":15583,"d":16430,"c":42},{"w":1425168000,"a":137,"d":45,"c":18},{"w":1425772800,"a":586,"d":64,"c":19},{"w":1426377600,"a":867,"d":186,"c":25},{"w":1426982400,"a":489,"d":370,"c":21},{"w":1427587200,"a":14860,"d":13188,"c":61},{"w":1428192000,"a":4404,"d":3768,"c":48},{"w":1428796800,"a":24642,"d":20874,"c":63},{"w":1429401600,"a":17766,"d":15372,"c":23},{"w":1430006400,"a":0,"d":0,"c":0},{"w":1430611200,"a":25883,"d":24362,"c":23},{"w":1431216000,"a":527,"d":10,"c":7},{"w":1431820800,"a":264,"d":141,"c":17},{"w":1432425600,"a":844,"d":604,"c":37},{"w":1433030400,"a":533,"d":66,"c":26},{"w":1433635200,"a":538954,"d":347378,"c":43},{"w":1434240000,"a":547,"d":121,"c":30},{"w":1434844800,"a":282,"d":7,"c":4},{"w":1435449600,"a":3538,"d":3334,"c":5},{"w":1436054400,"a":189,"d":50,"c":15},{"w":1436659200,"a":239,"d":190,"c":25},{"w":1437264000,"a":1009,"d":119,"c":32},{"w":1437868800,"a":0,"d":0,"c":0},{"w":1438473600,"a":3771,"d":1030,"c":35},{"w":1439078400,"a":2,"d":21,"c":2},{"w":1439683200,"a":1178,"d":755,"c":31},{"w":1440288000,"a":22701,"d":20082,"c":71},{"w":1440892800,"a":45,"d":1,"c":2},{"w":1441497600,"a":593,"d":314,"c":20},{"w":1442102400,"a":301,"d":171,"c":36},{"w":1442707200,"a":2868,"d":76,"c":29},{"w":1443312000,"a":1,"d":1,"c":1},{"w":1443916800,"a":9246,"d":8983,"c":41},{"w":1444521600,"a":612,"d":205,"c":16},{"w":1445126400,"a":912,"d":318,"c":51},{"w":1445731200,"a":63,"d":36,"c":10},{"w":1446336000,"a":245,"d":39,"c":12},{"w":1446940800,"a":367,"d":48,"c":20},{"w":1447545600,"a":122,"d":173,"c":3},{"w":1448150400,"a":242,"d":427,"c":17},{"w":1448755200,"a":538,"d":95,"c":23},{"w":1449360000,"a":97,"d":58,"c":4},{"w":1449964800,"a":5251,"d":4794,"c":19},{"w":1450569600,"a":0,"d":0,"c":0},{"w":1451174400,"a":0,"d":0,"c":0},{"w":1451779200,"a":0,"d":0,"c":0},{"w":1452384000,"a":0,"d":0,"c":0},{"w":1452988800,"a":90,"d":0,"c":2},{"w":1453593600,"a":781285,"d":711178,"c":5},{"w":1454198400,"a":491,"d":55,"c":8},{"w":1454803200,"a":14,"d":32,"c":5},{"w":1455408000,"a":62,"d":18,"c":9},{"w":1456012800,"a":182,"d":27,"c":7},{"w":1456617600,"a":135,"d":75,"c":10},{"w":1457222400,"a":95,"d":26,"c":7},{"w":1457827200,"a":0,"d":0,"c":0},{"w":1458432000,"a":2018,"d":1188,"c":19},{"w":1459036800,"a":0,"d":0,"c":0},{"w":1459641600,"a":253,"d":40,"c":8},{"w":1460246400,"a":314,"d":237,"c":1},{"w":1460851200,"a":1541,"d":123,"c":20},{"w":1461456000,"a":224,"d":181,"c":11},{"w":1462060800,"a":1249,"d":367,"c":29},{"w":1462665600,"a":332,"d":44,"c":14},{"w":1463270400,"a":669,"d":282,"c":27},{"w":1463875200,"a":571,"d":256,"c":19},{"w":1464480000,"a":393,"d":129,"c":27},{"w":1465084800,"a":657,"d":460,"c":24},{"w":1465689600,"a":450,"d":242,"c":11},{"w":1466294400,"a":1038,"d":88,"c":26},{"w":1466899200,"a":0,"d":0,"c":0},{"w":1467504000,"a":125,"d":0,"c":2},{"w":1468108800,"a":16,"d":18,"c":2},{"w":1468713600,"a":0,"d":0,"c":0},{"w":1469318400,"a":0,"d":0,"c":0},{"w":1469923200,"a":0,"d":0,"c":0},{"w":1470528000,"a":542,"d":78,"c":16},{"w":1471132800,"a":406,"d":2,"c":7},{"w":1471737600,"a":80,"d":25,"c":7},{"w":1472342400,"a":0,"d":0,"c":0},{"w":1472947200,"a":0,"d":0,"c":0},{"w":1473552000,"a":0,"d":0,"c":0},{"w":1474156800,"a":0,"d":0,"c":0},{"w":1474761600,"a":0,"d":0,"c":0},{"w":1475366400,"a":0,"d":0,"c":0},{"w":1475971200,"a":0,"d":0,"c":0},{"w":1476576000,"a":0,"d":0,"c":0},{"w":1477180800,"a":0,"d":0,"c":0},{"w":1477785600,"a":0,"d":0,"c":0},{"w":1478390400,"a":0,"d":0,"c":0},{"w":1478995200,"a":0,"d":0,"c":0},{"w":1479600000,"a":0,"d":0,"c":0},{"w":1480204800,"a":0,"d":0,"c":0},{"w":1480809600,"a":0,"d":0,"c":0},{"w":1481414400,"a":0,"d":0,"c":0},{"w":1482019200,"a":0,"d":0,"c":0},{"w":1482624000,"a":0,"d":0,"c":0},{"w":1483228800,"a":0,"d":0,"c":0},{"w":1483833600,"a":0,"d":0,"c":0},{"w":1484438400,"a":0,"d":0,"c":0},{"w":1485043200,"a":0,"d":0,"c":0},{"w":1485648000,"a":99,"d":65,"c":7},{"w":1486252800,"a":2287,"d":2320,"c":13},{"w":1486857600,"a":11,"d":5,"c":2},{"w":1487462400,"a":0,"d":0,"c":0},{"w":1488067200,"a":232,"d":7,"c":9},{"w":1488672000,"a":9356,"d":8815,"c":6},{"w":1489276800,"a":0,"d":0,"c":0},{"w":1489881600,"a":1,"d":0,"c":1},{"w":1490486400,"a":0,"d":0,"c":0},{"w":1491091200,"a":0,"d":0,"c":0},{"w":1491696000,"a":0,"d":0,"c":0},{"w":1492300800,"a":352,"d":6,"c":5},{"w":1492905600,"a":480,"d":104,"c":17},{"w":1493510400,"a":2,"d":2,"c":1},{"w":1494115200,"a":363,"d":10,"c":6},{"w":1494720000,"a":0,"d":0,"c":0},{"w":1495324800,"a":0,"d":0,"c":0},{"w":1495929600,"a":0,"d":0,"c":0},{"w":1496534400,"a":120,"d":3,"c":6},{"w":1497139200,"a":268,"d":28,"c":10},{"w":1497744000,"a":103,"d":33,"c":10},{"w":1498348800,"a":73,"d":21,"c":10},{"w":1498953600,"a":0,"d":0,"c":0},{"w":1499558400,"a":0,"d":0,"c":0},{"w":1500163200,"a":0,"d":0,"c":0},{"w":1500768000,"a":0,"d":0,"c":0},{"w":1501372800,"a":13,"d":10,"c":3},{"w":1501977600,"a":0,"d":0,"c":0},{"w":1502582400,"a":0,"d":0,"c":0},{"w":1503187200,"a":0,"d":0,"c":0},{"w":1503792000,"a":1,"d":1,"c":1},{"w":1504396800,"a":0,"d":0,"c":0},{"w":1505001600,"a":0,"d":0,"c":0},{"w":1505606400,"a":0,"d":0,"c":0},{"w":1506211200,"a":0,"d":0,"c":0},{"w":1506816000,"a":0,"d":0,"c":0},{"w":1507420800,"a":0,"d":0,"c":0},{"w":1508025600,"a":0,"d":0,"c":0},{"w":1508630400,"a":63,"d":4,"c":5},{"w":1509235200,"a":0,"d":0,"c":0},{"w":1509840000,"a":0,"d":0,"c":0},{"w":1510444800,"a":0,"d":0,"c":0},{"w":1511049600,"a":260,"d":70,"c":11},{"w":1511654400,"a":1349,"d":1176,"c":8},{"w":1512259200,"a":100,"d":0,"c":2},{"w":1512864000,"a":0,"d":0,"c":0},{"w":1513468800,"a":26,"d":0,"c":1},{"w":1514073600,"a":0,"d":0,"c":0},{"w":1514678400,"a":0,"d":0,"c":0},{"w":1515283200,"a":0,"d":399,"c":1},{"w":1515888000,"a":0,"d":0,"c":0},{"w":1516492800,"a":0,"d":0,"c":0},{"w":1517097600,"a":0,"d":0,"c":0},{"w":1517702400,"a":0,"d":0,"c":0},{"w":1518307200,"a":0,"d":0,"c":0},{"w":1518912000,"a":0,"d":0,"c":0},{"w":1519516800,"a":195,"d":61,"c":8},{"w":1520121600,"a":0,"d":0,"c":0},{"w":1520726400,"a":0,"d":0,"c":0},{"w":1521331200,"a":0,"d":0,"c":0},{"w":1521936000,"a":0,"d":0,"c":0},{"w":1522540800,"a":30,"d":0,"c":1},{"w":1523145600,"a":0,"d":0,"c":0},{"w":1523750400,"a":0,"d":0,"c":0},{"w":1524355200,"a":0,"d":0,"c":0},{"w":1524960000,"a":1251,"d":1091,"c":7},{"w":1525564800,"a":51,"d":12,"c":7},{"w":1526169600,"a":0,"d":0,"c":0},{"w":1526774400,"a":3,"d":1,"c":1},{"w":1527379200,"a":228,"d":159,"c":10},{"w":1527984000,"a":2,"d":1,"c":2},{"w":1528588800,"a":0,"d":0,"c":0},{"w":1529193600,"a":0,"d":0,"c":0},{"w":1529798400,"a":0,"d":0,"c":0},{"w":1530403200,"a":0,"d":0,"c":0},{"w":1531008000,"a":0,"d":0,"c":0},{"w":1531612800,"a":0,"d":0,"c":0},{"w":1532217600,"a":0,"d":0,"c":0},{"w":1532822400,"a":0,"d":0,"c":0},{"w":1533427200,"a":0,"d":0,"c":0},{"w":1534032000,"a":4,"d":4,"c":1},{"w":1534636800,"a":0,"d":0,"c":0},{"w":1535241600,"a":0,"d":0,"c":0},{"w":1535846400,"a":0,"d":0,"c":0},{"w":1536451200,"a":0,"d":0,"c":0},{"w":1537056000,"a":0,"d":0,"c":0},{"w":1537660800,"a":0,"d":0,"c":0},{"w":1538265600,"a":0,"d":0,"c":0},{"w":1538870400,"a":0,"d":0,"c":0},{"w":1539475200,"a":0,"d":0,"c":0},{"w":1540080000,"a":0,"d":0,"c":0},{"w":1540684800,"a":0,"d":0,"c":0},{"w":1541289600,"a":0,"d":0,"c":0},{"w":1541894400,"a":0,"d":0,"c":0},{"w":1542499200,"a":0,"d":0,"c":0},{"w":1543104000,"a":0,"d":0,"c":0},{"w":1543708800,"a":0,"d":0,"c":0},{"w":1544313600,"a":0,"d":0,"c":0},{"w":1544918400,"a":0,"d":0,"c":0},{"w":1545523200,"a":0,"d":0,"c":0},{"w":1546128000,"a":0,"d":0,"c":0},{"w":1546732800,"a":0,"d":0,"c":0},{"w":1547337600,"a":0,"d":0,"c":0},{"w":1547942400,"a":0,"d":0,"c":0},{"w":1548547200,"a":0,"d":0,"c":0},{"w":1549152000,"a":0,"d":0,"c":0},{"w":1549756800,"a":0,"d":0,"c":0},{"w":1550361600,"a":682,"d":157,"c":29},{"w":1550966400,"a":55,"d":16,"c":5},{"w":1551571200,"a":0,"d":0,"c":0},{"w":1552176000,"a":0,"d":0,"c":0},{"w":1552780800,"a":0,"d":0,"c":0},{"w":1553385600,"a":0,"d":0,"c":0},{"w":1553990400,"a":0,"d":0,"c":0},{"w":1554595200,"a":0,"d":0,"c":0},{"w":1555200000,"a":0,"d":0,"c":0},{"w":1555804800,"a":0,"d":0,"c":0},{"w":1556409600,"a":0,"d":0,"c":0},{"w":1557014400,"a":0,"d":0,"c":0},{"w":1557619200,"a":0,"d":0,"c":0},{"w":1558224000,"a":0,"d":0,"c":0},{"w":1558828800,"a":360,"d":25,"c":3},{"w":1559433600,"a":0,"d":0,"c":0},{"w":1560038400,"a":0,"d":0,"c":0},{"w":1560643200,"a":1,"d":0,"c":1},{"w":1561248000,"a":0,"d":0,"c":0},{"w":1561852800,"a":0,"d":0,"c":0},{"w":1562457600,"a":0,"d":0,"c":0}],"author":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false}}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_pulls_1000.res b/lib/github/tests/mock/repo_pulls_1000.res
new file mode 100644 (file)
index 0000000..76f6935
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/pulls/1000","id":25873438,"node_id":"MDExOlB1bGxSZXF1ZXN0MjU4NzM0Mzg=","html_url":"https://github.com/nitlang/nit/pull/1000","diff_url":"https://github.com/nitlang/nit/pull/1000.diff","patch_url":"https://github.com/nitlang/nit/pull/1000.patch","issue_url":"https://api.github.com/repos/nitlang/nit/issues/1000","number":1000,"state":"closed","locked":false,"title":"Raise nitc from the dead","user":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"body":"Raise dead on `nitc`.\nIt's super effective...\n","created_at":"2014-12-11T02:55:09Z","updated_at":"2014-12-18T14:14:33Z","closed_at":"2014-12-13T15:38:09Z","merged_at":"2014-12-13T15:38:09Z","merge_commit_sha":"49af656d278987d3a09f8500bcbe019e3c0f6367","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":81916206,"node_id":"MDU6TGFiZWw4MTkxNjIwNg==","url":"https://api.github.com/repos/nitlang/nit/labels/ok_will_merge","name":"ok_will_merge","color":"009800","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/nitlang/nit/pulls/1000/commits","review_comments_url":"https://api.github.com/repos/nitlang/nit/pulls/1000/comments","review_comment_url":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/1000/comments","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/273b078ecc1a395f260992ec9fb08a31e8c338d9","head":{"label":"nitlang:raise-nitc","ref":"raise-nitc","sha":"273b078ecc1a395f260992ec9fb08a31e8c338d9","user":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"repo":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-17T13:13:03Z","pushed_at":"2019-06-19T00:02:11Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123083,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":56,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":171,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":56,"open_issues":171,"watchers":187,"default_branch":"master"}},"base":{"label":"nitlang:master","ref":"master","sha":"8bd95517ec64090da1356ee1a88af82a9ccf2847","user":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"repo":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-17T13:13:03Z","pushed_at":"2019-06-19T00:02:11Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123083,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":56,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":171,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":56,"open_issues":171,"watchers":187,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/1000"},"html":{"href":"https://github.com/nitlang/nit/pull/1000"},"issue":{"href":"https://api.github.com/repos/nitlang/nit/issues/1000"},"comments":{"href":"https://api.github.com/repos/nitlang/nit/issues/1000/comments"},"review_comments":{"href":"https://api.github.com/repos/nitlang/nit/pulls/1000/comments"},"review_comment":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nitlang/nit/pulls/1000/commits"},"statuses":{"href":"https://api.github.com/repos/nitlang/nit/statuses/273b078ecc1a395f260992ec9fb08a31e8c338d9"}},"author_association":"MEMBER","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"comments":7,"review_comments":0,"maintainer_can_modify":false,"commits":11,"additions":282,"deletions":268,"changed_files":67}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_pulls_945_comments.res b/lib/github/tests/mock/repo_pulls_945_comments.res
new file mode 100644 (file)
index 0000000..8f8161f
--- /dev/null
@@ -0,0 +1 @@
+[{"url":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010363","pull_request_review_id":null,"id":21010363,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDEwMzYz","diff_hunk":"@@ -981,11 +983,11 @@ redef class AAttrPropdef\n \n \t\t\t\tif mtype == null then return\n \t\t\tend\n-\t\telse if ntype != null then\n+\t\telse if ntype != null and inherited_type == mtype then\n \t\t\tif nexpr isa ANewExpr then\n \t\t\t\tvar xmtype = modelbuilder.resolve_mtype(mmodule, mclassdef, nexpr.n_type)\n \t\t\t\tif xmtype == mtype then\n-\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition\")\n+\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition {inherited_type or else \"?\"}\")","path":"src/modelize/modelize_property.nit","position":null,"original_position":26,"commit_id":"ce5e187a87ed5c41144ea5637188a0677d840fdc","original_commit_id":"5f0ab1c7f3c560a67867d5eb08f5c3082f251c20","user":{"login":"jcbrinfo","id":6044484,"node_id":"MDQ6VXNlcjYwNDQ0ODQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6044484?v=4","gravatar_id":"","url":"https://api.github.com/users/jcbrinfo","html_url":"https://github.com/jcbrinfo","followers_url":"https://api.github.com/users/jcbrinfo/followers","following_url":"https://api.github.com/users/jcbrinfo/following{/other_user}","gists_url":"https://api.github.com/users/jcbrinfo/gists{/gist_id}","starred_url":"https://api.github.com/users/jcbrinfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcbrinfo/subscriptions","organizations_url":"https://api.github.com/users/jcbrinfo/orgs","repos_url":"https://api.github.com/users/jcbrinfo/repos","events_url":"https://api.github.com/users/jcbrinfo/events{/privacy}","received_events_url":"https://api.github.com/users/jcbrinfo/received_events","type":"User","site_admin":false},"body":"Warning: `inherited_type` is always non null here.\n","created_at":"2014-11-27T20:39:29Z","updated_at":"2014-11-28T01:05:12Z","html_url":"https://github.com/nitlang/nit/pull/945#discussion_r21010363","pull_request_url":"https://api.github.com/repos/nitlang/nit/pulls/945","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010363"},"html":{"href":"https://github.com/nitlang/nit/pull/945#discussion_r21010363"},"pull_request":{"href":"https://api.github.com/repos/nitlang/nit/pulls/945"}}},{"url":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010554","pull_request_review_id":null,"id":21010554,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDEwNTU0","diff_hunk":"@@ -981,11 +983,11 @@ redef class AAttrPropdef\n \n \t\t\t\tif mtype == null then return\n \t\t\tend\n-\t\telse if ntype != null then\n+\t\telse if ntype != null and inherited_type == mtype then\n \t\t\tif nexpr isa ANewExpr then\n \t\t\t\tvar xmtype = modelbuilder.resolve_mtype(mmodule, mclassdef, nexpr.n_type)\n \t\t\t\tif xmtype == mtype then\n-\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition\")\n+\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition {inherited_type or else \"?\"}\")","path":"src/modelize/modelize_property.nit","position":null,"original_position":26,"commit_id":"ce5e187a87ed5c41144ea5637188a0677d840fdc","original_commit_id":"5f0ab1c7f3c560a67867d5eb08f5c3082f251c20","user":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"body":"Oups. C'est du debug qui traine :/\n","created_at":"2014-11-27T20:50:42Z","updated_at":"2014-11-28T01:05:12Z","html_url":"https://github.com/nitlang/nit/pull/945#discussion_r21010554","pull_request_url":"https://api.github.com/repos/nitlang/nit/pulls/945","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010554"},"html":{"href":"https://github.com/nitlang/nit/pull/945#discussion_r21010554"},"pull_request":{"href":"https://api.github.com/repos/nitlang/nit/pulls/945"}}}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_pulls_comment_21010363.res b/lib/github/tests/mock/repo_pulls_comment_21010363.res
new file mode 100644 (file)
index 0000000..c6f62ee
--- /dev/null
@@ -0,0 +1 @@
+{"url":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010363","pull_request_review_id":null,"id":21010363,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDEwMzYz","diff_hunk":"@@ -981,11 +983,11 @@ redef class AAttrPropdef\n \n \t\t\t\tif mtype == null then return\n \t\t\tend\n-\t\telse if ntype != null then\n+\t\telse if ntype != null and inherited_type == mtype then\n \t\t\tif nexpr isa ANewExpr then\n \t\t\t\tvar xmtype = modelbuilder.resolve_mtype(mmodule, mclassdef, nexpr.n_type)\n \t\t\t\tif xmtype == mtype then\n-\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition\")\n+\t\t\t\t\tmodelbuilder.advice(ntype, \"useless-type\", \"Warning: useless type definition {inherited_type or else \"?\"}\")","path":"src/modelize/modelize_property.nit","position":null,"original_position":26,"commit_id":"ce5e187a87ed5c41144ea5637188a0677d840fdc","original_commit_id":"5f0ab1c7f3c560a67867d5eb08f5c3082f251c20","user":{"login":"jcbrinfo","id":6044484,"node_id":"MDQ6VXNlcjYwNDQ0ODQ=","avatar_url":"https://avatars0.githubusercontent.com/u/6044484?v=4","gravatar_id":"","url":"https://api.github.com/users/jcbrinfo","html_url":"https://github.com/jcbrinfo","followers_url":"https://api.github.com/users/jcbrinfo/followers","following_url":"https://api.github.com/users/jcbrinfo/following{/other_user}","gists_url":"https://api.github.com/users/jcbrinfo/gists{/gist_id}","starred_url":"https://api.github.com/users/jcbrinfo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jcbrinfo/subscriptions","organizations_url":"https://api.github.com/users/jcbrinfo/orgs","repos_url":"https://api.github.com/users/jcbrinfo/repos","events_url":"https://api.github.com/users/jcbrinfo/events{/privacy}","received_events_url":"https://api.github.com/users/jcbrinfo/received_events","type":"User","site_admin":false},"body":"Warning: `inherited_type` is always non null here.\n","created_at":"2014-11-27T20:39:29Z","updated_at":"2014-11-28T01:05:12Z","html_url":"https://github.com/nitlang/nit/pull/945#discussion_r21010363","pull_request_url":"https://api.github.com/repos/nitlang/nit/pulls/945","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments/21010363"},"html":{"href":"https://github.com/nitlang/nit/pull/945#discussion_r21010363"},"pull_request":{"href":"https://api.github.com/repos/nitlang/nit/pulls/945"}}}
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_pulls_nit.res b/lib/github/tests/mock/repo_pulls_nit.res
new file mode 100644 (file)
index 0000000..ecdc180
--- /dev/null
@@ -0,0 +1 @@
+[{"url":"https://api.github.com/repos/nitlang/nit/pulls/2755","id":290413900,"node_id":"MDExOlB1bGxSZXF1ZXN0MjkwNDEzOTAw","html_url":"https://github.com/nitlang/nit/pull/2755","diff_url":"https://github.com/nitlang/nit/pull/2755.diff","patch_url":"https://github.com/nitlang/nit/pull/2755.patch","issue_url":"https://api.github.com/repos/nitlang/nit/issues/2755","number":2755,"state":"open","locked":false,"title":"nitrpg: Move `nitrpg` to its own repository","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"body":"`nitrpg` is broken since a long time. I think https:/api.github.com actually changed twice since it broke. I don't plan on killing it yet but I moved it to its own repository until I worked again on it (or never).\r\n\r\nSee https://github.com/Morriar/nitrpg.\r\n\r\nSigned-off-by: Alexandre Terrasa <alexandre@moz-code.org>","created_at":"2019-06-20T23:34:44Z","updated_at":"2019-06-21T00:45:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1acf6cf46daaebea63410ee86a365ecf4eb291f3","assignee":null,"assignees":[],"requested_reviewers":[{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/nitlang/nit/pulls/2755/commits","review_comments_url":"https://api.github.com/repos/nitlang/nit/pulls/2755/comments","review_comment_url":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2755/comments","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/5dbab8fac6905d57abf78076c58916b0b34b35ce","head":{"label":"Morriar:at-move-nitrpg","ref":"at-move-nitrpg","sha":"5dbab8fac6905d57abf78076c58916b0b34b35ce","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"repo":{"id":1456691,"node_id":"MDEwOlJlcG9zaXRvcnkxNDU2Njkx","name":"nit","full_name":"Morriar/nit","private":false,"owner":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Morriar/nit","description":"Nit language","fork":true,"url":"https://api.github.com/repos/Morriar/nit","forks_url":"https://api.github.com/repos/Morriar/nit/forks","keys_url":"https://api.github.com/repos/Morriar/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Morriar/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Morriar/nit/teams","hooks_url":"https://api.github.com/repos/Morriar/nit/hooks","issue_events_url":"https://api.github.com/repos/Morriar/nit/issues/events{/number}","events_url":"https://api.github.com/repos/Morriar/nit/events","assignees_url":"https://api.github.com/repos/Morriar/nit/assignees{/user}","branches_url":"https://api.github.com/repos/Morriar/nit/branches{/branch}","tags_url":"https://api.github.com/repos/Morriar/nit/tags","blobs_url":"https://api.github.com/repos/Morriar/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Morriar/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Morriar/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/Morriar/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Morriar/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/Morriar/nit/languages","stargazers_url":"https://api.github.com/repos/Morriar/nit/stargazers","contributors_url":"https://api.github.com/repos/Morriar/nit/contributors","subscribers_url":"https://api.github.com/repos/Morriar/nit/subscribers","subscription_url":"https://api.github.com/repos/Morriar/nit/subscription","commits_url":"https://api.github.com/repos/Morriar/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/Morriar/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/Morriar/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/Morriar/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/Morriar/nit/contents/{+path}","compare_url":"https://api.github.com/repos/Morriar/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Morriar/nit/merges","archive_url":"https://api.github.com/repos/Morriar/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Morriar/nit/downloads","issues_url":"https://api.github.com/repos/Morriar/nit/issues{/number}","pulls_url":"https://api.github.com/repos/Morriar/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/Morriar/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/Morriar/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Morriar/nit/labels{/name}","releases_url":"https://api.github.com/repos/Morriar/nit/releases{/id}","deployments_url":"https://api.github.com/repos/Morriar/nit/deployments","created_at":"2011-03-08T22:16:33Z","updated_at":"2018-08-23T01:37:28Z","pushed_at":"2019-06-20T23:32:07Z","git_url":"git://github.com/Morriar/nit.git","ssh_url":"git@github.com:Morriar/nit.git","clone_url":"https://github.com/Morriar/nit.git","svn_url":"https://github.com/Morriar/nit","homepage":"http://nitlanguage.org","size":208064,"stargazers_count":2,"watchers_count":2,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":16,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":2,"open_issues":16,"watchers":2,"default_branch":"master"}},"base":{"label":"nitlang:master","ref":"master","sha":"8fd264ae263d5418c56671414b9788c5d67621b4","user":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"repo":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-20T18:53:54Z","pushed_at":"2019-06-20T23:34:45Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123163,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":58,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":174,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":58,"open_issues":174,"watchers":187,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2755"},"html":{"href":"https://github.com/nitlang/nit/pull/2755"},"issue":{"href":"https://api.github.com/repos/nitlang/nit/issues/2755"},"comments":{"href":"https://api.github.com/repos/nitlang/nit/issues/2755/comments"},"review_comments":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2755/comments"},"review_comment":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2755/commits"},"statuses":{"href":"https://api.github.com/repos/nitlang/nit/statuses/5dbab8fac6905d57abf78076c58916b0b34b35ce"}},"author_association":"MEMBER"},{"url":"https://api.github.com/repos/nitlang/nit/pulls/2754","id":290326110,"node_id":"MDExOlB1bGxSZXF1ZXN0MjkwMzI2MTEw","html_url":"https://github.com/nitlang/nit/pull/2754","diff_url":"https://github.com/nitlang/nit/pull/2754.diff","patch_url":"https://github.com/nitlang/nit/pull/2754.patch","issue_url":"https://api.github.com/repos/nitlang/nit/issues/2754","number":2754,"state":"open","locked":false,"title":"First (and small) integration of the ICU library in Nit : locale and case modification","user":{"login":"anadaouda","id":36400538,"node_id":"MDQ6VXNlcjM2NDAwNTM4","avatar_url":"https://avatars1.githubusercontent.com/u/36400538?v=4","gravatar_id":"","url":"https://api.github.com/users/anadaouda","html_url":"https://github.com/anadaouda","followers_url":"https://api.github.com/users/anadaouda/followers","following_url":"https://api.github.com/users/anadaouda/following{/other_user}","gists_url":"https://api.github.com/users/anadaouda/gists{/gist_id}","starred_url":"https://api.github.com/users/anadaouda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anadaouda/subscriptions","organizations_url":"https://api.github.com/users/anadaouda/orgs","repos_url":"https://api.github.com/users/anadaouda/repos","events_url":"https://api.github.com/users/anadaouda/events{/privacy}","received_events_url":"https://api.github.com/users/anadaouda/received_events","type":"User","site_admin":false},"body":"## ICU\r\nICU (International Components for Unicode) is an API which implements algorithms provided by the Unicode Consortium in C.\r\n\r\n## locale.nit\r\nLocale object which makes sure that the name of the locale is valid and handled by the ICU library\r\n\r\n## caseModification.nit\r\nAddition of `uppercase`, `lowercase` and `title` in the `String` and `CString` classes using a `CaseModification` object.","created_at":"2019-06-20T18:28:52Z","updated_at":"2019-06-20T18:48:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b4da82a7ab077e2c08741a576c3d920f09d22a84","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/nitlang/nit/pulls/2754/commits","review_comments_url":"https://api.github.com/repos/nitlang/nit/pulls/2754/comments","review_comment_url":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2754/comments","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/fbb5f6c481cd45ef2f20f62138723dd428eb060d","head":{"label":"anadaouda:icu","ref":"icu","sha":"fbb5f6c481cd45ef2f20f62138723dd428eb060d","user":{"login":"anadaouda","id":36400538,"node_id":"MDQ6VXNlcjM2NDAwNTM4","avatar_url":"https://avatars1.githubusercontent.com/u/36400538?v=4","gravatar_id":"","url":"https://api.github.com/users/anadaouda","html_url":"https://github.com/anadaouda","followers_url":"https://api.github.com/users/anadaouda/followers","following_url":"https://api.github.com/users/anadaouda/following{/other_user}","gists_url":"https://api.github.com/users/anadaouda/gists{/gist_id}","starred_url":"https://api.github.com/users/anadaouda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anadaouda/subscriptions","organizations_url":"https://api.github.com/users/anadaouda/orgs","repos_url":"https://api.github.com/users/anadaouda/repos","events_url":"https://api.github.com/users/anadaouda/events{/privacy}","received_events_url":"https://api.github.com/users/anadaouda/received_events","type":"User","site_admin":false},"repo":{"id":192944232,"node_id":"MDEwOlJlcG9zaXRvcnkxOTI5NDQyMzI=","name":"nit","full_name":"anadaouda/nit","private":false,"owner":{"login":"anadaouda","id":36400538,"node_id":"MDQ6VXNlcjM2NDAwNTM4","avatar_url":"https://avatars1.githubusercontent.com/u/36400538?v=4","gravatar_id":"","url":"https://api.github.com/users/anadaouda","html_url":"https://github.com/anadaouda","followers_url":"https://api.github.com/users/anadaouda/followers","following_url":"https://api.github.com/users/anadaouda/following{/other_user}","gists_url":"https://api.github.com/users/anadaouda/gists{/gist_id}","starred_url":"https://api.github.com/users/anadaouda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/anadaouda/subscriptions","organizations_url":"https://api.github.com/users/anadaouda/orgs","repos_url":"https://api.github.com/users/anadaouda/repos","events_url":"https://api.github.com/users/anadaouda/events{/privacy}","received_events_url":"https://api.github.com/users/anadaouda/received_events","type":"User","site_admin":false},"html_url":"https://github.com/anadaouda/nit","description":"Nit language","fork":true,"url":"https://api.github.com/repos/anadaouda/nit","forks_url":"https://api.github.com/repos/anadaouda/nit/forks","keys_url":"https://api.github.com/repos/anadaouda/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/anadaouda/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/anadaouda/nit/teams","hooks_url":"https://api.github.com/repos/anadaouda/nit/hooks","issue_events_url":"https://api.github.com/repos/anadaouda/nit/issues/events{/number}","events_url":"https://api.github.com/repos/anadaouda/nit/events","assignees_url":"https://api.github.com/repos/anadaouda/nit/assignees{/user}","branches_url":"https://api.github.com/repos/anadaouda/nit/branches{/branch}","tags_url":"https://api.github.com/repos/anadaouda/nit/tags","blobs_url":"https://api.github.com/repos/anadaouda/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/anadaouda/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/anadaouda/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/anadaouda/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/anadaouda/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/anadaouda/nit/languages","stargazers_url":"https://api.github.com/repos/anadaouda/nit/stargazers","contributors_url":"https://api.github.com/repos/anadaouda/nit/contributors","subscribers_url":"https://api.github.com/repos/anadaouda/nit/subscribers","subscription_url":"https://api.github.com/repos/anadaouda/nit/subscription","commits_url":"https://api.github.com/repos/anadaouda/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/anadaouda/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/anadaouda/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/anadaouda/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/anadaouda/nit/contents/{+path}","compare_url":"https://api.github.com/repos/anadaouda/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/anadaouda/nit/merges","archive_url":"https://api.github.com/repos/anadaouda/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/anadaouda/nit/downloads","issues_url":"https://api.github.com/repos/anadaouda/nit/issues{/number}","pulls_url":"https://api.github.com/repos/anadaouda/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/anadaouda/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/anadaouda/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/anadaouda/nit/labels{/name}","releases_url":"https://api.github.com/repos/anadaouda/nit/releases{/id}","deployments_url":"https://api.github.com/repos/anadaouda/nit/deployments","created_at":"2019-06-20T15:25:48Z","updated_at":"2019-06-20T18:32:09Z","pushed_at":"2019-06-20T18:03:33Z","git_url":"git://github.com/anadaouda/nit.git","ssh_url":"git@github.com:anadaouda/nit.git","clone_url":"https://github.com/anadaouda/nit.git","svn_url":"https://github.com/anadaouda/nit","homepage":"http://nitlanguage.org","size":123094,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"nitlang:master","ref":"master","sha":"9248f1c81c08b6c0ec7785678dbb1d7440b885d9","user":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"repo":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-20T18:53:54Z","pushed_at":"2019-06-20T23:34:45Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123163,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":58,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":174,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":58,"open_issues":174,"watchers":187,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2754"},"html":{"href":"https://github.com/nitlang/nit/pull/2754"},"issue":{"href":"https://api.github.com/repos/nitlang/nit/issues/2754"},"comments":{"href":"https://api.github.com/repos/nitlang/nit/issues/2754/comments"},"review_comments":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2754/comments"},"review_comment":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2754/commits"},"statuses":{"href":"https://api.github.com/repos/nitlang/nit/statuses/fbb5f6c481cd45ef2f20f62138723dd428eb060d"}},"author_association":"FIRST_TIME_CONTRIBUTOR"},{"url":"https://api.github.com/repos/nitlang/nit/pulls/2753","id":289519734,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjg5NTE5NzM0","html_url":"https://github.com/nitlang/nit/pull/2753","diff_url":"https://github.com/nitlang/nit/pull/2753.diff","patch_url":"https://github.com/nitlang/nit/pull/2753.patch","issue_url":"https://api.github.com/repos/nitlang/nit/issues/2753","number":2753,"state":"open","locked":false,"title":"Mock Github API tests","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"body":"This PR adds a mock to GithubAPI so we can avoid sending requests to the API on CI.\r\n\r\nFor each API call we save the actual Github response body from the API and reuse it during the tests.\r\nThe attribute `update_responses_cache` can be set to `true` so the cache files are updated from the API when `nitunit` is called.","created_at":"2019-06-19T02:53:50Z","updated_at":"2019-06-20T18:27:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e28d2edb92bfefd354d6fd4916cb861661d69dcf","assignee":null,"assignees":[],"requested_reviewers":[{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false},{"id":225254102,"node_id":"MDU6TGFiZWwyMjUyNTQxMDI=","url":"https://api.github.com/repos/nitlang/nit/labels/tests_are_ok","name":"tests_are_ok","color":"00b800","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/nitlang/nit/pulls/2753/commits","review_comments_url":"https://api.github.com/repos/nitlang/nit/pulls/2753/comments","review_comment_url":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2753/comments","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/5c19395e548326c9d78dff9b274e3e7b93c1704f","head":{"label":"Morriar:at-github_mock","ref":"at-github_mock","sha":"5c19395e548326c9d78dff9b274e3e7b93c1704f","user":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"repo":{"id":1456691,"node_id":"MDEwOlJlcG9zaXRvcnkxNDU2Njkx","name":"nit","full_name":"Morriar/nit","private":false,"owner":{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Morriar/nit","description":"Nit language","fork":true,"url":"https://api.github.com/repos/Morriar/nit","forks_url":"https://api.github.com/repos/Morriar/nit/forks","keys_url":"https://api.github.com/repos/Morriar/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Morriar/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Morriar/nit/teams","hooks_url":"https://api.github.com/repos/Morriar/nit/hooks","issue_events_url":"https://api.github.com/repos/Morriar/nit/issues/events{/number}","events_url":"https://api.github.com/repos/Morriar/nit/events","assignees_url":"https://api.github.com/repos/Morriar/nit/assignees{/user}","branches_url":"https://api.github.com/repos/Morriar/nit/branches{/branch}","tags_url":"https://api.github.com/repos/Morriar/nit/tags","blobs_url":"https://api.github.com/repos/Morriar/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Morriar/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Morriar/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/Morriar/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Morriar/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/Morriar/nit/languages","stargazers_url":"https://api.github.com/repos/Morriar/nit/stargazers","contributors_url":"https://api.github.com/repos/Morriar/nit/contributors","subscribers_url":"https://api.github.com/repos/Morriar/nit/subscribers","subscription_url":"https://api.github.com/repos/Morriar/nit/subscription","commits_url":"https://api.github.com/repos/Morriar/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/Morriar/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/Morriar/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/Morriar/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/Morriar/nit/contents/{+path}","compare_url":"https://api.github.com/repos/Morriar/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Morriar/nit/merges","archive_url":"https://api.github.com/repos/Morriar/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Morriar/nit/downloads","issues_url":"https://api.github.com/repos/Morriar/nit/issues{/number}","pulls_url":"https://api.github.com/repos/Morriar/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/Morriar/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/Morriar/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Morriar/nit/labels{/name}","releases_url":"https://api.github.com/repos/Morriar/nit/releases{/id}","deployments_url":"https://api.github.com/repos/Morriar/nit/deployments","created_at":"2011-03-08T22:16:33Z","updated_at":"2018-08-23T01:37:28Z","pushed_at":"2019-06-20T23:32:07Z","git_url":"git://github.com/Morriar/nit.git","ssh_url":"git@github.com:Morriar/nit.git","clone_url":"https://github.com/Morriar/nit.git","svn_url":"https://github.com/Morriar/nit","homepage":"http://nitlanguage.org","size":208064,"stargazers_count":2,"watchers_count":2,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":16,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":2,"open_issues":16,"watchers":2,"default_branch":"master"}},"base":{"label":"nitlang:master","ref":"master","sha":"9248f1c81c08b6c0ec7785678dbb1d7440b885d9","user":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"repo":{"id":328597,"node_id":"MDEwOlJlcG9zaXRvcnkzMjg1OTc=","name":"nit","full_name":"nitlang/nit","private":false,"owner":{"login":"nitlang","id":5420298,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0MjAyOTg=","avatar_url":"https://avatars1.githubusercontent.com/u/5420298?v=4","gravatar_id":"","url":"https://api.github.com/users/nitlang","html_url":"https://github.com/nitlang","followers_url":"https://api.github.com/users/nitlang/followers","following_url":"https://api.github.com/users/nitlang/following{/other_user}","gists_url":"https://api.github.com/users/nitlang/gists{/gist_id}","starred_url":"https://api.github.com/users/nitlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nitlang/subscriptions","organizations_url":"https://api.github.com/users/nitlang/orgs","repos_url":"https://api.github.com/users/nitlang/repos","events_url":"https://api.github.com/users/nitlang/events{/privacy}","received_events_url":"https://api.github.com/users/nitlang/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nitlang/nit","description":"Nit language","fork":false,"url":"https://api.github.com/repos/nitlang/nit","forks_url":"https://api.github.com/repos/nitlang/nit/forks","keys_url":"https://api.github.com/repos/nitlang/nit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nitlang/nit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nitlang/nit/teams","hooks_url":"https://api.github.com/repos/nitlang/nit/hooks","issue_events_url":"https://api.github.com/repos/nitlang/nit/issues/events{/number}","events_url":"https://api.github.com/repos/nitlang/nit/events","assignees_url":"https://api.github.com/repos/nitlang/nit/assignees{/user}","branches_url":"https://api.github.com/repos/nitlang/nit/branches{/branch}","tags_url":"https://api.github.com/repos/nitlang/nit/tags","blobs_url":"https://api.github.com/repos/nitlang/nit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nitlang/nit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nitlang/nit/git/refs{/sha}","trees_url":"https://api.github.com/repos/nitlang/nit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nitlang/nit/statuses/{sha}","languages_url":"https://api.github.com/repos/nitlang/nit/languages","stargazers_url":"https://api.github.com/repos/nitlang/nit/stargazers","contributors_url":"https://api.github.com/repos/nitlang/nit/contributors","subscribers_url":"https://api.github.com/repos/nitlang/nit/subscribers","subscription_url":"https://api.github.com/repos/nitlang/nit/subscription","commits_url":"https://api.github.com/repos/nitlang/nit/commits{/sha}","git_commits_url":"https://api.github.com/repos/nitlang/nit/git/commits{/sha}","comments_url":"https://api.github.com/repos/nitlang/nit/comments{/number}","issue_comment_url":"https://api.github.com/repos/nitlang/nit/issues/comments{/number}","contents_url":"https://api.github.com/repos/nitlang/nit/contents/{+path}","compare_url":"https://api.github.com/repos/nitlang/nit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nitlang/nit/merges","archive_url":"https://api.github.com/repos/nitlang/nit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nitlang/nit/downloads","issues_url":"https://api.github.com/repos/nitlang/nit/issues{/number}","pulls_url":"https://api.github.com/repos/nitlang/nit/pulls{/number}","milestones_url":"https://api.github.com/repos/nitlang/nit/milestones{/number}","notifications_url":"https://api.github.com/repos/nitlang/nit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nitlang/nit/labels{/name}","releases_url":"https://api.github.com/repos/nitlang/nit/releases{/id}","deployments_url":"https://api.github.com/repos/nitlang/nit/deployments","created_at":"2009-10-06T15:03:00Z","updated_at":"2019-06-20T18:53:54Z","pushed_at":"2019-06-20T23:34:45Z","git_url":"git://github.com/nitlang/nit.git","ssh_url":"git@github.com:nitlang/nit.git","clone_url":"https://github.com/nitlang/nit.git","svn_url":"https://github.com/nitlang/nit","homepage":"http://nitlanguage.org","size":123163,"stargazers_count":187,"watchers_count":187,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":58,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":174,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":58,"open_issues":174,"watchers":187,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2753"},"html":{"href":"https://github.com/nitlang/nit/pull/2753"},"issue":{"href":"https://api.github.com/repos/nitlang/nit/issues/2753"},"comments":{"href":"https://api.github.com/repos/nitlang/nit/issues/2753/comments"},"review_comments":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2753/comments"},"review_comment":{"href":"https://api.github.com/repos/nitlang/nit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nitlang/nit/pulls/2753/commits"},"statuses":{"href":"https://api.github.com/repos/nitlang/nit/statuses/5c19395e548326c9d78dff9b274e3e7b93c1704f"}},"author_association":"MEMBER"}]
\ No newline at end of file
diff --git a/lib/github/tests/mock/repo_search_issues_nit.res b/lib/github/tests/mock/repo_search_issues_nit.res
new file mode 100644 (file)
index 0000000..b745c2e
--- /dev/null
@@ -0,0 +1 @@
+{"total_count":151,"incomplete_results":false,"items":[{"url":"https://api.github.com/repos/nitlang/nit/issues/2747","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/2747/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/2747/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/2747/events","html_url":"https://github.com/nitlang/nit/pull/2747","id":444577497,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjc5MjA5MjEx","number":2747,"title":"Introduction of contracts in Nit","user":{"login":"Delja","id":26239416,"node_id":"MDQ6VXNlcjI2MjM5NDE2","avatar_url":"https://avatars1.githubusercontent.com/u/26239416?v=4","gravatar_id":"","url":"https://api.github.com/users/Delja","html_url":"https://github.com/Delja","followers_url":"https://api.github.com/users/Delja/followers","following_url":"https://api.github.com/users/Delja/following{/other_user}","gists_url":"https://api.github.com/users/Delja/gists{/gist_id}","starred_url":"https://api.github.com/users/Delja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Delja/subscriptions","organizations_url":"https://api.github.com/users/Delja/orgs","repos_url":"https://api.github.com/users/Delja/repos","events_url":"https://api.github.com/users/Delja/events{/privacy}","received_events_url":"https://api.github.com/users/Delja/received_events","type":"User","site_admin":false},"labels":[{"id":1252784180,"node_id":"MDU6TGFiZWwxMjUyNzg0MTgw","url":"https://api.github.com/repos/nitlang/nit/labels/ok_to_test","name":"ok_to_test","color":"1e179e","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2019-05-15T18:16:56Z","updated_at":"2019-06-17T15:08:13Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/nitlang/nit/pulls/2747","html_url":"https://github.com/nitlang/nit/pull/2747","diff_url":"https://github.com/nitlang/nit/pull/2747.diff","patch_url":"https://github.com/nitlang/nit/pull/2747.patch"},"body":"# Contract\r\n\r\nAdding contract programming (Design by contract) in Nit language. Contracts works with nit annotations.\r\n\r\n## Annotations\r\n\r\nTo define a new contract you need to use the corresponding annotation. For example it is possible to define a contract that x must be strictly greater than 5. To do it would be necessary to define the contract in the following way `expects (x > 5)`. All expressions returning a boolean (comparison...) can be used as a condition.\r\n\r\nTwo annotations were added:\r\n\t\r\n- `expects` to indicate the conditions need to the execution of the methods\r\n- `ensures` to indicate the conditions of guarantee at the end of the execution of the methods\r\n\r\n## Method contract (ensures, expects)\r\n\r\nFor each method it is possible to define preconditions (`expects`) and  post-conditions (`ensures`). If the call of the method satisfies the prerequisites of the method, the caller may assume that the return conditions will be satisfied.\r\n\r\nThe method contracts can access all the parameters of the method as well as the set of attributes/methods visible in the context of the method. i.e the set of parameters and the set of methods and attributes of the current class can be used (attributes declare locally in the method can not be used). For post-conditions (ensures) the `result` attribute has been added to perform a check on the return value of the method.\r\n\r\n## Process\r\n\r\nA phase is executed to check all the methods. This check is done to know if:\r\n\r\n- The method is annoted (redefined or not)\r\n\r\n- The method is a redefinition of a method already having a contract (i.e a method that does not add any new conditions to the existing contract).\r\n\r\nWhen a contract is detected the code it's `extended` to add the verification features. A method is created to check the conditions of the contract.\r\n\r\n### Exemple\r\n\r\n#### Expect:\r\n```\r\nclass MyClass\r\n\tfun foo(x: Int)\r\n\tis\r\n\t\texpects(x > 0)\r\n\tdo\r\n\t\t[...]\r\n\tend\r\nend\r\n```\r\nRepresentation of the compiled class\r\n```\r\nclass MyClass\r\n\tfun foo(x: Int)\r\n\tis\r\n\t\texpects(x > 0)\r\n\tdo\r\n\t\tfoo_expects(x)\r\n\t\t[...]\r\n\tend\r\n\t\r\n\tfun foo_expects(x: Int)\r\n\tdo\r\n\t\tassert x > 0\r\n\tend\r\nend\r\n```\r\n#### Ensure:\r\n```\r\nclass MyClass\r\n\tfun foo(x: Int): Bool\r\n\tis\r\n\t\tensures(result == true)\r\n\tdo\r\n\t\t[...]\r\n\t\treturn true\r\n\tend\r\nend\r\n```\r\nRepresentation of the compiled class\r\n\r\n```\r\nclass MyClass\r\n\tfun foo(x: Int): Bool\r\n\tis\r\n\t\tensures(result == true)\r\n\tdo\r\n\t\t[...]\r\n\t\tvar result = true\r\n\t\tfoo_ensures(x, result)\r\n\t\treturn result\r\n\tend\r\n\t\r\n\tfun foo_ensures(x: Int, result: Bool)\r\n\tdo\r\n\t\tassert result == true\r\n\tend\r\nend\r\n```\r\n\r\n## Inheritance\r\n\r\nContracts support redefinition and adding condition. Noted that when a contract is defines in a parent class, it is no longer possible to remove this contract on all the classes that inherit or redefine them. They only need to be increased according to different subtyping rules.\r\n\r\nAll preconditions (expects) can be weakened. i.e it is possible to provide a new alternative to validate the contract. This corresponds to the use of a logical OR between the old and the new conditions.\r\n\r\nAll post-conditions (ensure) can be consolidate. i.e the new condition of the contract will provide a new guarantee to the user of the method. This rule can be translates into a logical AND between the old and the new conditions.\r\n\r\n### Exemple\r\n\r\n#### Expect\r\n\r\n```\r\nclass SubMyClass\r\n\tsuper MyClass\r\n\t\r\n\tredef fun foo(x: Int)\r\n\tis\r\n\t\texpects(x > 0, x == 0)\r\n\tdo\r\n\t\tfoo_expects(x)\r\n\t\t[...]\r\n\tend\r\n\t\r\n\tredef fun foo_expects(x: Int)\r\n\tdo\r\n\t\tif x == 0 then return\r\n\t\tassert super(x)\r\n\tend\r\nend\r\n```\r\n\r\n#### Ensure\r\n```\r\nclass SubMyClass\r\n\tsuper MyClass\r\n\t\r\n\tredef fun foo(x: Int): Bool\r\n\tis\r\n\t\tensures(result == true, x > 0)\r\n\tdo\r\n\t\t[...]\r\n\t\tvar result = true\r\n\t\tfoo_ensure(x, result)\r\n\t\treturn result\r\n\tend\r\n\t\r\n\tredef fun foo_ensures(x: Int, result: Bool)\r\n\tdo\r\n\t\tassert x > 0\r\n\t\tassert super(x, result)\r\n\tend\r\nend\r\n```\r\n\r\nSummary\r\n\r\n| Annotation    |  Inheritance condition type  | \r\n| ------------- | -------------| \r\n| expects       |        And (&&) |\r\n| ensures       |        Or (\\|\\|)  |\r\n\r\n## Invocation \r\n\r\nThe contracts extend the annotated methods by adding the call to the verification method. This means that once the method extended the execution of contracts will be systematically call (does not matter external or internal call). This part is subject to evolution in the months to come.\r\n","score":25.116352},{"url":"https://api.github.com/repos/nitlang/nit/issues/394","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/394/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/394/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/394/events","html_url":"https://github.com/nitlang/nit/issues/394","id":31243843,"node_id":"MDU6SXNzdWUzMTI0Mzg0Mw==","number":394,"title":"Receveurs nullables","user":{"login":"jpages","id":2535352,"node_id":"MDQ6VXNlcjI1MzUzNTI=","avatar_url":"https://avatars1.githubusercontent.com/u/2535352?v=4","gravatar_id":"","url":"https://api.github.com/users/jpages","html_url":"https://github.com/jpages","followers_url":"https://api.github.com/users/jpages/followers","following_url":"https://api.github.com/users/jpages/following{/other_user}","gists_url":"https://api.github.com/users/jpages/gists{/gist_id}","starred_url":"https://api.github.com/users/jpages/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpages/subscriptions","organizations_url":"https://api.github.com/users/jpages/orgs","repos_url":"https://api.github.com/users/jpages/repos","events_url":"https://api.github.com/users/jpages/events{/privacy}","received_events_url":"https://api.github.com/users/jpages/received_events","type":"User","site_admin":false},"labels":[{"id":55675455,"node_id":"MDU6TGFiZWw1NTY3NTQ1NQ==","url":"https://api.github.com/repos/nitlang/nit/labels/spec","name":"spec","color":"207de5","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/nitlang/nit/milestones/4","html_url":"https://github.com/nitlang/nit/milestone/4","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/4/labels","id":795157,"node_id":"MDk6TWlsZXN0b25lNzk1MTU3","number":4,"title":"v1.0prealpha","description":"The first public version that we are proud off and can be used sanely by non Nit people.","creator":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":22,"state":"open","created_at":"2014-09-19T00:16:45Z","updated_at":"2017-06-02T12:43:15Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2014-04-10T13:47:18Z","updated_at":"2015-05-21T15:19:28Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Dans le code suivant : \n\n``` ruby\n\nmodule test_nullable\n\nclass A\n    fun foo\n    do\n        print \"foo dans A\"\n    end\nend\n\nclass B\n    var p: nullable A\n\n    init\n    do\n    end\nend\n\nvar test = new B\n\n#Erreur de compilation ?\ntest.p.foo\n```\n\nOn s'attend à avoir une erreur de compilation qui nous dit que p est nullable et que cela empêche d'appeler `foo` sans faire de cast vers not null.\n\nPourtant actuellement, nit et nitg ne disent rien et une erreur est produite au runtime.\n","score":19.246428},{"url":"https://api.github.com/repos/nitlang/nit/issues/808","repository_url":"https://api.github.com/repos/nitlang/nit","labels_url":"https://api.github.com/repos/nitlang/nit/issues/808/labels{/name}","comments_url":"https://api.github.com/repos/nitlang/nit/issues/808/comments","events_url":"https://api.github.com/repos/nitlang/nit/issues/808/events","html_url":"https://github.com/nitlang/nit/issues/808","id":44962286,"node_id":"MDU6SXNzdWU0NDk2MjI4Ng==","number":808,"title":"Appel de méthodes abstraites non redéfinies","user":{"login":"colinvidal","id":7349453,"node_id":"MDQ6VXNlcjczNDk0NTM=","avatar_url":"https://avatars0.githubusercontent.com/u/7349453?v=4","gravatar_id":"","url":"https://api.github.com/users/colinvidal","html_url":"https://github.com/colinvidal","followers_url":"https://api.github.com/users/colinvidal/followers","following_url":"https://api.github.com/users/colinvidal/following{/other_user}","gists_url":"https://api.github.com/users/colinvidal/gists{/gist_id}","starred_url":"https://api.github.com/users/colinvidal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/colinvidal/subscriptions","organizations_url":"https://api.github.com/users/colinvidal/orgs","repos_url":"https://api.github.com/users/colinvidal/repos","events_url":"https://api.github.com/users/colinvidal/events{/privacy}","received_events_url":"https://api.github.com/users/colinvidal/received_events","type":"User","site_admin":false},"labels":[{"id":55675455,"node_id":"MDU6TGFiZWw1NTY3NTQ1NQ==","url":"https://api.github.com/repos/nitlang/nit/labels/spec","name":"spec","color":"207de5","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/nitlang/nit/milestones/4","html_url":"https://github.com/nitlang/nit/milestone/4","labels_url":"https://api.github.com/repos/nitlang/nit/milestones/4/labels","id":795157,"node_id":"MDk6TWlsZXN0b25lNzk1MTU3","number":4,"title":"v1.0prealpha","description":"The first public version that we are proud off and can be used sanely by non Nit people.","creator":{"login":"privat","id":135828,"node_id":"MDQ6VXNlcjEzNTgyOA==","avatar_url":"https://avatars1.githubusercontent.com/u/135828?v=4","gravatar_id":"","url":"https://api.github.com/users/privat","html_url":"https://github.com/privat","followers_url":"https://api.github.com/users/privat/followers","following_url":"https://api.github.com/users/privat/following{/other_user}","gists_url":"https://api.github.com/users/privat/gists{/gist_id}","starred_url":"https://api.github.com/users/privat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privat/subscriptions","organizations_url":"https://api.github.com/users/privat/orgs","repos_url":"https://api.github.com/users/privat/repos","events_url":"https://api.github.com/users/privat/events{/privacy}","received_events_url":"https://api.github.com/users/privat/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":22,"state":"open","created_at":"2014-09-19T00:16:45Z","updated_at":"2017-06-02T12:43:15Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2014-10-06T09:09:06Z","updated_at":"2014-10-06T13:21:53Z","closed_at":null,"author_association":"NONE","body":"Avec le code suivant \n\n```\nclass A fun foo is abstract end\nclass B super A fun bar do self.foo end end\nvar b = new B\nb.bar\n```\n\nNitg ne détecte aucune erreur (avec nitg -W il y en a beaucoup, mais rien a voir avec ça), donc ça amène à une exception à l'exécution lors de l'appel à foo sur self (var a = new A a.foo pose le même soucis).\nTesté avec version v0.6.9-12-gd65a790.\n","score":19.246391}]}
\ No newline at end of file
diff --git a/lib/github/tests/mock/user_Morriar.res b/lib/github/tests/mock/user_Morriar.res
new file mode 100644 (file)
index 0000000..5a491b1
--- /dev/null
@@ -0,0 +1 @@
+{"login":"Morriar","id":583144,"node_id":"MDQ6VXNlcjU4MzE0NA==","avatar_url":"https://avatars2.githubusercontent.com/u/583144?v=4","gravatar_id":"","url":"https://api.github.com/users/Morriar","html_url":"https://github.com/Morriar","followers_url":"https://api.github.com/users/Morriar/followers","following_url":"https://api.github.com/users/Morriar/following{/other_user}","gists_url":"https://api.github.com/users/Morriar/gists{/gist_id}","starred_url":"https://api.github.com/users/Morriar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Morriar/subscriptions","organizations_url":"https://api.github.com/users/Morriar/orgs","repos_url":"https://api.github.com/users/Morriar/repos","events_url":"https://api.github.com/users/Morriar/events{/privacy}","received_events_url":"https://api.github.com/users/Morriar/received_events","type":"User","site_admin":false,"name":"Alexandre Terrasa","company":null,"blog":"moz-code.org","location":null,"email":"alexandre@moz-code.org","hireable":null,"bio":null,"public_repos":96,"public_gists":1,"followers":42,"following":10,"created_at":"2011-01-25T17:50:36Z","updated_at":"2019-06-15T01:41:56Z"}
\ No newline at end of file
diff --git a/lib/github/tests/test_api.nit b/lib/github/tests/test_api.nit
new file mode 100644 (file)
index 0000000..19538e4
--- /dev/null
@@ -0,0 +1,397 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_api is test
+
+intrude import api
+
+# GithubAPI testing
+#
+# To avoid test flakyness we test the GithubAPI against a mock of the real one.
+# For each api request we return a cache file of the real API response body.
+#
+# Cache files can be automatically created and updated by setting
+# `update_responses_cache` to `true` then running `nitunit`.
+class MockGithubAPI
+       super GithubAPI
+
+       # Mock so it returns the response from a file
+       #
+       # See `update_responses_cache`.
+       redef fun send(method, path, headers, body) do
+               print path # for debugging
+
+               assert has_response(path)
+
+               if update_responses_cache then
+                       var file = response_file(path)
+                       save_actual_response(path, file)
+               end
+
+               var response = response_string(path)
+               if response_is_error(path) then
+                       last_error = new GithubAPIError(
+                               response.parse_json.as(JsonObject)["message"].as(String),
+                               response_code(path).to_i,
+                               path
+                       )
+                       was_error = true
+                       return null
+               end
+               return response
+       end
+
+       var test_responses: Map[String, String] do
+               var map = new HashMap[String, String]
+               map["/user"] = "user_Morriar"
+               map["/users/Morriar"] = "user_Morriar"
+               map["/repos/nitlang/nit"] = "repo_nit"
+               map["/repos/nitlang/nit/labels?page=1&per_page=3"] = "repo_labels_nit"
+               map["/repos/nitlang/nit/labels/ok_will_merge"] = "repo_labels_ok_will_merge"
+               map["/repos/nitlang/nit/milestones?page=1&per_page=3"] = "repo_milestones_nit"
+               map["/repos/nitlang/nit/milestones/4"] = "repo_milestones_4"
+               map["/repos/nitlang/nit/branches?page=1&per_page=2"] = "repo_branches_nit"
+               map["/repos/nitlang/nit/branches/master"] = "repo_branches_master"
+               map["/repos/nitlang/nit/issues?page=1&per_page=3"] = "repo_issues_nit"
+               map["/repos/nitlang/nit/issues/1000"] = "repo_issues_1000"
+               map["/repos/nitlang/nit/issues/1000/comments?page=1&per_page=3"] = "repo_issues_comments_nit"
+               map["/repos/nitlang/nit/issues/comments/6020149"] = "repo_issues_comments_6020149"
+               map["/repos/nitlang/nit/issues/1000/events?page=1&per_page=3"] = "repo_issues_events_nit"
+               map["/repos/nitlang/nit/issues/events/199674194"] = "repo_issues_events_199674194"
+               map["/repos/nitlang/nit/pulls?page=1&per_page=3"] = "repo_pulls_nit"
+               map["/repos/nitlang/nit/pulls/1000"] = "repo_pulls_1000"
+               map["/repos/nitlang/nit/pulls/945/comments?page=1&per_page=3"] = "repo_pulls_945_comments"
+               map["/repos/nitlang/nit/pulls/comments/21010363"] = "repo_pulls_comment_21010363"
+               map["/repos/nitlang/nit/commits/64ce1f"] = "repo_commits_64ce1f"
+               map["/repos/nitlang/nit/commits/4e3c688d/status"] = "repo_commits_4e3c68_status"
+               map["/repos/nitlang/nit/comments/8982707"] = "repo_comments_8982707"
+               map["/search/issues?q=foo repo:nitlang/nit&page=1&per_page=3"] = "repo_search_issues_nit"
+               map["/repos/nitlang/nit/stats/contributors"] = "repo_nit_contributors"
+               # errors
+               map["/users/not_found/not_found"] = "errors_404"
+               return map
+       end
+
+       # Does `self` have a mock response for Github `path`?
+       fun has_response(path: String): Bool do
+               return test_responses.has_key(path)
+       end
+
+       # Root responses cache directory
+       var responses_dir: String is lazy do
+               var path = "NIT_TESTING_PATH".environ.dirname / "mock"
+               path.mkdir
+               return path
+       end
+
+       # Returns the response file path for a Github `path`
+       fun response_file(path: String): String do
+               assert has_response(path)
+               return "{responses_dir / test_responses[path]}.res"
+       end
+
+       # Returns the response body string for a Github `path`
+       fun response_string(path: String): String do
+               var file = response_file(path)
+               assert file.file_exists
+               return file.to_path.read_all
+       end
+
+       # Is this response a simulated error?
+       fun response_is_error(path: String): Bool do
+               assert has_response(path)
+               return test_responses[path].has_prefix("errors_")
+       end
+
+       # Status code of a simulated error
+       #
+       # See `response_is_error`.
+       fun response_code(path: String): String do
+               assert response_is_error(path)
+               return test_responses[path].split("_").last
+       end
+
+       # Response caching
+
+       # Activate caching
+       #
+       # Change this value to `true` then run nitunit to cache the responses
+       # from the Github API.
+       #
+       # Default is `false`.
+       var update_responses_cache = false
+
+       # Save the actual Github API response body for `uri` to a `file`
+       private fun save_actual_response(uri, file: String) do
+               assert update_responses_cache
+
+               var request = new CurlHTTPRequest("{api_url}{sanitize_uri(uri)}")
+               request.user_agent = actual_api.user_agent
+               request.headers = actual_api.new_headers
+               var response = request.execute
+
+               if response isa CurlResponseSuccess then
+                       response.body_str.write_to_file(file)
+               else if response isa CurlResponseFailed then
+                       response.error_msg.write_to_file(file)
+               else abort
+
+               print "Response to `{uri}` saved at `{file}`"
+       end
+
+       # Actual GithubCurl instance used for caching
+       private var actual_api = new GithubAPI(get_github_oauth, "nitunit")
+end
+
+class TestGithubAPI
+       test
+
+       fun api: MockGithubAPI do return new MockGithubAPI("test", "test")
+
+       fun test_deserialize is test do
+               var response = api.response_string("/users/Morriar")
+               var obj = api.deserialize(response)
+               assert obj isa User
+               assert obj.login == "Morriar"
+       end
+
+       fun test_sanitize_url is test do
+               # TODO better tests
+               assert api.sanitize_uri("/repos/Nit with spaces/") == "/repos/Nit%20with%20spaces/"
+       end
+
+       fun test_get is test do
+               var api = self.api
+               var obj = api.get("/users/Morriar")
+               assert not api.was_error
+               assert api.last_error == null
+               assert obj isa User
+               assert obj.login == "Morriar"
+       end
+
+       fun test_get_404 is test do
+               var api = self.api
+               var res = api.get("/users/not_found/not_found")
+               assert res == null
+               assert api.was_error
+               var err = api.last_error
+               assert err isa GithubAPIError
+               assert err.status_code == 404
+               assert err.message == "Not Found"
+       end
+
+       # TODO test more error cases
+
+       fun test_get_auth_user is test do
+               var user = api.get_auth_user
+               assert user isa User
+               assert user.login == "Morriar"
+               assert user.avatar_url == "https://avatars2.githubusercontent.com/u/583144?v=4"
+               assert user.name == "Alexandre Terrasa"
+               assert user.email == "alexandre@moz-code.org"
+               assert user.blog == "moz-code.org"
+       end
+
+       fun test_get_user is test do
+               var user = api.get_user("Morriar")
+               assert user isa User
+               assert user.login == "Morriar"
+               assert user.avatar_url == "https://avatars2.githubusercontent.com/u/583144?v=4"
+               assert user.name == "Alexandre Terrasa"
+               assert user.email == "alexandre@moz-code.org"
+               assert user.blog == "moz-code.org"
+       end
+
+       fun test_get_repo is test do
+               var repo = api.get_repo("nitlang/nit")
+               assert repo isa Repo
+               assert repo.full_name == "nitlang/nit"
+               assert repo.name == "nit"
+               assert repo.owner.login == "nitlang"
+               assert repo.default_branch == "master"
+       end
+
+       fun test_get_branches is test do
+               var branches = api.get_repo_branches("nitlang/nit", 1, 2)
+               assert branches.length == 2
+               assert branches.first.name == "master"
+               assert branches.last.name == "next"
+       end
+
+       fun test_get_issues is test do
+               var issues = api.get_repo_issues("nitlang/nit", 1, 3)
+               assert issues.length == 3
+               assert issues.first.title == "nitrpg: Move `nitrpg` to its own repository"
+               assert issues.last.title == "Mock Github API tests"
+       end
+
+       fun test_search_issues is test do
+               var results = api.search_repo_issues("nitlang/nit", "foo", 1, 3)
+               assert results isa SearchResults
+               assert results.items.length == 3
+               assert results.items.first.as(Issue).title == "Introduction of contracts in Nit"
+               assert results.items.last.as(Issue).title == "Appel de méthodes abstraites non redéfinies"
+       end
+
+       fun test_get_labels is test do
+               var labels = api.get_repo_labels("nitlang/nit", 1, 3)
+               assert labels.length == 3
+               assert labels.first.name == "API"
+               assert labels.last.name == "NEP"
+       end
+
+       fun test_get_milestones is test do
+               var milestones = api.get_repo_milestones("nitlang/nit", 1, 3)
+               assert milestones.length == 3
+               assert milestones.first.title == "v1.0prealpha"
+               assert milestones.last.title == "nitdoc - Abstraction levels"
+       end
+
+       fun test_get_pulls is test do
+               var pulls = api.get_repo_pulls("nitlang/nit", 1, 3)
+               assert pulls.length == 3
+               assert pulls.first.title == "nitrpg: Move `nitrpg` to its own repository"
+               assert pulls.last.title == "Mock Github API tests"
+       end
+
+       fun test_get_branch is test do
+               var branch = api.get_branch("nitlang/nit", "master")
+               assert branch isa Branch
+               assert branch.name == "master"
+       end
+
+       fun test_get_commit is test do
+               var commit = api.get_commit("nitlang/nit", "64ce1f")
+               assert commit isa Commit
+               assert commit.sha == "64ce1f587209024f5de46d06c70526a569ff537f"
+               # TODO other fields
+       end
+
+       fun test_get_commit_status is test do
+               var status = api.get_commit_status("nitlang/nit", "4e3c688d")
+               assert status isa CommitStatus
+               assert status.state == "failure"
+               assert status.sha == "4e3c688d2c4b875c00f206eb4c4b6f2c4f34c096"
+               assert status.total_count == 1
+
+               var sub = status.statuses.first
+               assert sub.state == "failure"
+               assert sub.description == "Merged pipeline on gitlab: failed"
+               assert sub.context == "gitlab-ci"
+
+               var repo = status.repository
+               assert repo isa Repo
+               assert repo.full_name == "nitlang/nit"
+       end
+
+       fun test_get_issue is test do
+               var issue = api.get_issue("nitlang/nit", 1000)
+               assert issue isa Issue
+               assert issue.number == 1000
+               assert issue.title == "Raise nitc from the dead"
+               assert issue.user.as(User).login == "privat"
+               assert issue.comments == 7
+               assert issue.created_at == "2014-12-11T02:55:09Z"
+               assert issue.closed_at == "2014-12-13T15:38:09Z"
+               assert issue.closed_by.as(User).login == "privat"
+               assert issue.body == "Raise dead on `nitc`.\nIt's super effective...\n"
+               assert issue.is_pull_request
+       end
+
+       fun test_get_issue_comments is test do
+               var comments = api.get_issue_comments("nitlang/nit", 1000, 1, 3)
+               assert comments.length == 3
+               assert comments.first.user.login == "R4PaSs"
+               assert comments.last.user.login == "xymus"
+       end
+
+       fun test_get_issue_events is test do
+               var events = api.get_issue_events("nitlang/nit", 1000, 1, 3)
+               assert events.length == 3
+               assert events.first.actor.login == "privat"
+               assert events.last.actor.login == "xymus"
+       end
+
+       fun test_get_pull is test do
+               var pull = api.get_pull("nitlang/nit", 1000)
+               assert pull isa PullRequest
+               assert pull.number == 1000
+               assert pull.title == "Raise nitc from the dead"
+               assert pull.user.as(User).login == "privat"
+               assert pull.comments == 7
+               assert pull.created_at == "2014-12-11T02:55:09Z"
+               assert pull.closed_at == "2014-12-13T15:38:09Z"
+               assert pull.merged_by.as(User).login == "privat"
+               assert pull.body == "Raise dead on `nitc`.\nIt's super effective...\n"
+       end
+
+       fun test_get_pull_comments is test do
+               var comments = api.get_pull_comments("nitlang/nit", 945, 1, 3)
+               assert comments.length == 2
+               assert comments.first.path == "src/modelize/modelize_property.nit"
+       end
+
+       fun test_get_pull_comment is test do
+               var comment = api.get_pull_comment("nitlang/nit", 21010363)
+               assert comment isa PullComment
+               assert comment.path == "src/modelize/modelize_property.nit"
+               assert comment.original_position == 26
+               assert comment.pull_number == 945
+               # TODO other fields
+       end
+
+       fun test_get_label is test do
+               var labl = api.get_label("nitlang/nit", "ok_will_merge")
+               assert labl isa Label
+               assert labl.name == "ok_will_merge"
+       end
+
+       fun test_get_milestone is test do
+               var milestone = api.get_milestone("nitlang/nit", 4)
+               assert milestone isa Milestone
+               assert milestone.title == "v1.0prealpha"
+               # TODO other fields
+       end
+
+       fun test_get_issue_event is test do
+               var event = api.get_issue_event("nitlang/nit", 199674194)
+               assert event isa IssueEvent
+               assert event.actor.login == "privat"
+               assert event.event == "labeled"
+               assert event.labl.as(Label).name == "need_review"
+       end
+
+       fun test_get_issue_comment is test do
+               var comment = api.get_issue_comment("nitlang/nit", 6020149)
+               assert comment isa IssueComment
+               assert comment.user.login == "privat"
+               assert comment.created_at.to_s == "2012-05-30T20:16:54Z"
+               assert comment.issue_number == 10
+       end
+
+       fun test_get_comment is test do
+               var comment = api.get_commit_comment("nitlang/nit", 8982707)
+               assert comment isa CommitComment
+               assert comment.user.login == "Morriar"
+               assert comment.body == "For testing purposes...\n"
+               assert comment.commit_id == "7eacb86d1e24b7e72bc9ac869bf7182c0300ceca"
+       end
+
+       fun test_contributor_stats is test do
+               var stats = api.get_repo_contrib_stats("nitlang/nit")
+               assert stats.last.author.login == "privat"
+               assert stats.last.total == 4536
+               assert stats.last.weeks.length == 575
+       end
+end
diff --git a/lib/github/tests/test_wallet.nit b/lib/github/tests/test_wallet.nit
new file mode 100644 (file)
index 0000000..e38c1d7
--- /dev/null
@@ -0,0 +1,69 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_wallet is test
+
+import wallet
+
+redef class GithubAPI
+
+       # Tokens mocked as valid
+       #
+       # All other tokens will be considered as bad credentials.
+       var valid_tokens = ["t1", "t2"]
+
+       # Mock so it returns the response from a file
+       #
+       # See `update_responses_cache`.
+       redef fun get_auth_user do
+               if not valid_tokens.has(auth) then
+                       was_error = true
+                       last_error = new GithubAPIError("""{
+                               "message":"Bad credentials",
+                               "documentation_url":"https://developer.github.com/v3"
+                       }""", 401, "/user")
+                       return null
+               end
+
+               was_error = false
+               last_error = null
+               return new User("test")
+       end
+end
+
+class TestGithubWallet
+       test
+
+       fun test_get_next_token is test do
+               var wallet = new GithubWallet(["t1", "t2", "t3"])
+
+               for j in [1..3] do
+                       for i in [1..3] do assert wallet.get_next_token == "t{i}"
+               end
+       end
+
+       fun test_get_api_only_bad is test do
+               var wallet = new GithubWallet(["bad1", "bad2"])
+               assert wallet.api.auth == "bad2"
+               assert wallet.api.auth == "bad2"
+       end
+
+       fun test_get_api is test do
+               var wallet = new GithubWallet(["bad1", "t1", "t2", "bad2"])
+               assert wallet.api.auth == "t1"
+               assert wallet.api.auth == "t2"
+               assert wallet.api.auth == "t1"
+               assert wallet.api.auth == "t2"
+       end
+end
index 985f7aa..000d042 100644 (file)
@@ -45,7 +45,7 @@
 # or
 #
 # ~~~
-# wallet = new GithubWallet.from_tokens(["token 1", "token 2"])
+# wallet = new GithubWallet(["token 1", "token 2"])
 # ~~~
 #
 # The `show_status` method can be used to display a summary of the validity of
@@ -69,7 +69,7 @@
 # instance with a fresh rate limit.
 #
 # ~~~
-# wallet = new GithubWallet.from_tokens(["token 1", "token 2"])
+# wallet = new GithubWallet(["token 1", "token 2"])
 # var api = wallet.api
 # ~~~
 #
 module wallet
 
 import github
-import console
+import logger
 
 # Github OAuth tokens wallet
 class GithubWallet
 
        # Github API tokens
-       var tokens = new Array[String]
+       var tokens = new Array[String] is optional
 
-       # Init `self` from a collection of tokens
-       init from_tokens(tokens: Collection[String]) do self.tokens.add_all tokens
-
-       # Do not use colors in console output
-       var no_colors = false is writable
-
-       # Display debug information about the token processing
-       var verbose = false is writable
+       # Logger used to display info about tokens state
+       var logger = new Logger is optional, writable
 
        # Add a new token in the wallet
        fun add(token: String) do tokens.add token
@@ -107,14 +101,14 @@ class GithubWallet
        fun api: GithubAPI do
                var token
                if tokens.is_empty then
-                       message "No tokens, using `get_github_oauth`"
+                       logger.warn "No tokens, using `get_github_oauth`"
                        token = get_github_oauth
                else
                        token = get_next_token
                        var tried = 0
                        while not check_token(token) do
                                if tried >= tokens.length - 1 then
-                                       message "Exhausted all tokens, using {token}"
+                                       logger.warn "Exhausted all tokens, using {token}"
                                        break
                                end
                                tried += 1
@@ -151,17 +145,16 @@ class GithubWallet
 
        # Check if a token is valid
        fun check_token(token: String): Bool do
-               message "Try token {token}"
+               logger.debug "Try token {token}"
                var api = new GithubAPI(token)
-               api.load_repo("nitlang/nit")
+               api.get_auth_user
                return not api.was_error
        end
 
-       # Print a message depending on `verbose`
-       fun message(message: String) do if verbose then print "[Github Wallet] {message}"
-
        # Show wallet status in console
-       fun show_status do
+       fun show_status(no_color: nullable Bool) do
+               no_color = no_color or else false
+
                if tokens.is_empty then
                        print "Wallet is empty"
                        return
@@ -170,9 +163,9 @@ class GithubWallet
                for token in tokens do
                        var status
                        if check_token(token) then
-                               status = if no_colors then "OK" else "OK".green
+                               status = if no_color then "OK" else "OK".green
                        else
-                               status = if no_colors then "KO" else "KO".red
+                               status = if no_color then "KO" else "KO".red
                        end
                        print " * [{status}] {token}"
                end
index e574dc4..28d5f6a 100644 (file)
@@ -862,6 +862,79 @@ abstract class MutableDigraph[V: Object]
                end
                return path
        end
+
+       # Cache of all predecessors for each vertex.
+       # This attribute are lazy to compute the list use `get_all_predecessors` for each needed vertexe.
+       # Warning the cache must be invalidated after `add_arc`
+       private var cache_all_predecessors = new HashMap[V, Set[V]]
+
+       # Cache of all successors for each vertex.
+       # This attribute are lazy to compute the list use `get_all_successors` for each needed vertexe.
+       # Warning the cache must be invalidated after `add_arc`
+       private var cache_all_successors = new HashMap[V, Set[V]]
+
+       # Invalid all cache `cache_all_predecessors` and `cache_all_successors`
+       private fun invalidated_all_cache
+       do
+               if not cache_all_successors.is_empty then cache_all_successors = new HashMap[V, Set[V]]
+               if not cache_all_predecessors.is_empty then cache_all_predecessors = new HashMap[V, Set[V]]
+       end
+
+       # Returns the all predecessors of `u`.
+       #
+       # `u` is include in the returned collection
+       #
+       # Returns an empty Array is the `u` does not exist
+       # ~~~
+       # var g = new HashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 4)
+       # assert g.get_all_predecessors(4).has(4)
+       # assert g.get_all_predecessors(4).has(3)
+       # assert g.get_all_predecessors(4).has(2)
+       # assert g.get_all_predecessors(4).has(1)
+       # ~~~
+       fun get_all_predecessors(u: V): Array[V]
+       do
+               if not vertices.has(u) then return new Array[V]
+               if not cache_all_predecessors.has_key(u) then compute_all_link(u)
+               return cache_all_predecessors[u].clone.to_a
+       end
+
+       # Returns the all successors of `u`.
+       #
+       # `u` is include in the returned collection
+       #
+       # Returns an empty Array is the `u` does not exist
+       # ~~~
+       # var g = new HashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 4)
+       # assert g.get_all_successors(2).has(3)
+       # assert g.get_all_successors(2).has(4)
+       # assert g.get_all_successors(2).has(2)
+       # ~~~
+       fun get_all_successors(u: V): Array[V]
+       do
+               if not vertices.has(u) then return new Array[V]
+               if not cache_all_successors.has_key(u) then compute_all_link(u)
+               return cache_all_successors[u].clone.to_a
+       end
+
+       # Compute all succesors and all predecessors for the given `u`
+       # The result is stocked in `cache_all_predecessors` and `cache_all_predecessors`
+       private fun compute_all_link(u: V)
+       do
+               if not vertices.has(u) then return
+               if not cache_all_predecessors.has_key(u) then cache_all_predecessors[u] = new Set[V]
+               if not cache_all_successors.has_key(u) then cache_all_successors[u] = new Set[V]
+               for v in vertices do
+                       if distance(v, u) != null then cache_all_predecessors[u].add(v)
+                       if distance(u, v) != null then cache_all_successors[u].add(v)
+               end
+       end
 end
 # A directed graph represented by hash maps
 class HashDigraph[V: Object]
@@ -908,6 +981,7 @@ class HashDigraph[V: Object]
                if not has_arc(u, v) then
                        incoming_vertices_map[v].add(u)
                        outgoing_vertices_map[u].add(v)
+                       invalidated_all_cache
                        number_of_arcs += 1
                end
        end
@@ -946,3 +1020,134 @@ class HashDigraph[V: Object]
 
        redef fun vertices_iterator: Iterator[V] do return outgoing_vertices_map.keys.iterator
 end
+
+# A reflexive directed graph
+# i.e an element is in relation with itself (ie is implies `self.has_arc(u,u)`))
+# This class avoids manually adding the reflexive vertices and at the same time it's avoids adding useless data to the hashmap.
+class ReflexiveHashDigraph[V: Object]
+       super HashDigraph[V]
+
+       # Adds the arc (u,v) to this graph.
+       # if `u` is the same as `v` do nothing
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(3, 1)
+       # assert g.has_arc(2,2)
+       # assert g.has_arc(1,2)
+       # assert g.has_arc(3,1)
+       # ~~~
+       redef fun add_arc(u, v)
+       do
+               # Check `u` is the same as `v`
+               if u != v then
+                       super
+               end
+       end
+
+       # Is (u,v) an arc in this graph?
+       # If `u` is the same as `v` return true
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(3, 1)
+       # g.add_vertex(4)
+       # assert g.has_arc(1,1)
+       # assert g.has_arc(2,2)
+       # assert g.has_arc(2,2)
+       # assert g.has_arc(3,2) == false
+       # assert g.has_arc(4,4)
+       # ~~~
+       redef fun has_arc(u, v)
+       do
+               return u == v or super
+       end
+
+       redef fun show_dot
+       do
+               var f = new ProcessWriter("dot", "-Txlib")
+               f.write to_dot
+               f.close
+               f.wait
+       end
+
+       # Returns a shortest path from vertex `u` to `v`.
+       #
+       # If `u` is the same as `v` return `[u]`
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 4)
+       # assert g.a_shortest_path(1, 4).length == 4
+       # assert g.a_shortest_path(1, 1).length == 1
+       # ~~~
+       redef fun a_shortest_path(u, v)
+       do
+               if u == v then
+                       var path = new List[V]
+                       path.add(u)
+                       return path
+               end
+               return super
+       end
+
+       # Returns the distance between `u` and `v`
+       #
+       # If `u` is the same as `v` return `1`
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 4)
+       # assert g.distance(1, 1) == 1
+       # assert g.distance(2, 2) == 1
+       # ~~~
+       redef fun distance(u, v)
+       do
+               if has_arc(u, v) and u == v then return 1
+               return super
+       end
+
+       # Returns the predecessors of `u`.
+       #
+       # `u` is include in the returned collection
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 1)
+       # assert g.predecessors(2).has(1)
+       # assert g.predecessors(2).has(2)
+       # ~~~
+       redef fun predecessors(u)
+       do
+               var super_predecessors = super
+               if incoming_vertices_map.has_key(u) then super_predecessors.add(u)
+               return super_predecessors
+       end
+
+       # Returns the successors of `u`.
+       #
+       # `u` is include in the returned collection
+       #
+       # ~~~
+       # var g = new ReflexiveHashDigraph[Int]
+       # g.add_arc(1, 2)
+       # g.add_arc(2, 3)
+       # g.add_arc(3, 1)
+       # assert g.successors(2).has(3)
+       # assert g.successors(2).has(2)
+       # ~~~
+       redef fun successors(u: V)
+       do
+               var super_successors = super
+               if outgoing_vertices_map.has_key(u) then super_successors.add(u)
+               return super_successors
+       end
+end
diff --git a/lib/ini/README.md b/lib/ini/README.md
new file mode 100644 (file)
index 0000000..4f9a478
--- /dev/null
@@ -0,0 +1,316 @@
+# `ini` - Read and write INI configuration files
+
+[INI files](https://en.wikipedia.org/wiki/INI_file) are simple text files with
+a basic structure composed of sections, properties and values used to store
+configuration parameters.
+
+Here's an example from the `package.ini` of this package:
+
+~~~
+import ini
+
+var package_ini = """
+[package]
+name=ini
+desc=Read and write INI configuration files.
+[upstream]
+git=https://github.com/nitlang/nit.git
+git.directory=lib/ini/
+"""
+~~~
+
+## Basic usage
+
+`IniFile` is used to parse INI strings and access their content:
+
+~~~
+var ini = new IniFile.from_string(package_ini)
+assert ini["package.name"] == "ini"
+assert ini["upstream.git.directory"] == "lib/ini/"
+assert ini["unknown.unknown"] == null
+~~~
+
+`IniFile` can also load INI configuration from a file:
+
+~~~
+package_ini.write_to_file("my_package.ini")
+
+ini = new IniFile.from_file("my_package.ini")
+assert ini["package.name"] == "ini"
+assert ini["upstream.git.directory"] == "lib/ini/"
+
+"my_package.ini".to_path.delete
+~~~
+
+INI content can be added or edited through the `IniFile` API then written to
+a stream or a file.
+
+~~~
+ini["package.name"] = "new name"
+ini["upstream.git.directory"] = "/dev/null"
+ini["section.key"] = "value"
+
+var stream = new StringWriter
+ini.write_to(stream)
+
+assert stream.to_s == """
+[package]
+name=new name
+desc=Read and write INI configuration files.
+[upstream]
+git=https://github.com/nitlang/nit.git
+git.directory=/dev/null
+[section]
+key=value
+"""
+~~~
+
+## INI content
+
+### Properties
+
+Properties are the basic element of the INI format.
+Every property correspond to a *key* associated to a *value* thanks to the equal (`=`) sign.
+
+~~~
+ini = new IniFile.from_string("""
+key1=value1
+key2=value2
+""")
+assert ini["key1"] == "value1"
+assert ini["key2"] == "value2"
+assert ini.length == 2
+~~~
+
+Accessing an unknown property returns `null`:
+
+~~~
+assert ini["unknown"] == null
+~~~
+
+Properties can be iterated over:
+
+~~~
+var i = 1
+for key, value in ini do
+       assert key == "key{i}"
+       assert value == "value{i}"
+       i += 1
+end
+~~~
+
+Property keys cannot contain the character `=`.
+Values can contain any character.
+Spaces are trimmed.
+
+~~~
+ini = new IniFile.from_string("""
+prop=erty1=value1
+ property2 =  value2
+property3=value3 ; with semicolon
+""")
+assert ini[";property1"] == null
+assert ini["prop=erty1"] == null
+assert ini["prop"] == "erty1=value1"
+assert ini["property2"] == "value2"
+assert ini[" property2 "] == "value2"
+assert ini["property3"] == "value3 ; with semicolon"
+~~~
+
+Both keys and values are case sensitive.
+
+~~~
+ini = new IniFile.from_string("""
+Property1=value1
+property2=Value2
+""")
+assert ini["property1"] == null
+assert ini["Property1"] == "value1"
+assert ini["property2"] != "value2"
+assert ini["property2"] == "Value2"
+~~~
+
+### Sections
+
+Properties may be grouped into arbitrary sections.
+The section name appears on a line by itself between square brackets (`[` and `]`).
+
+All keys after the section declaration are associated with that section.
+The is no explicit "end of section" delimiter; sections end at the next section
+declaration or the end of the file.
+Sections cannot be nested.
+
+~~~
+var content = """
+key1=value1
+key2=value2
+[section1]
+key1=value3
+key2=value4
+[section2]
+key1=value5
+"""
+
+ini = new IniFile.from_string(content)
+assert ini["key1"] == "value1"
+assert ini["unknown"] == null
+assert ini["section1.key1"] == "value3"
+assert ini["section1.unknown"] == null
+assert ini["section2.key1"] == "value5"
+~~~
+
+Sections can be iterated over:
+
+~~~
+i = 1
+for section in ini.sections do
+       assert section.name == "section{i}"
+       assert section["key1"].has_prefix("value")
+       i += 1
+end
+~~~
+
+When iterating over a file properties, only properties at root are returned.
+`flatten` can be used to iterate over all properties including the one from
+sections.
+
+~~~
+assert ini.join(", ", ": ") == "key1: value1, key2: value2"
+assert ini.flatten.join(", ", ": ") ==
+       "key1: value1, key2: value2, section1.key1: value3, section1.key2: value4, section2.key1: value5"
+
+i = 0
+for key, value in ini do
+       i += 1
+       assert key == "key{i}" and value == "value{i}"
+end
+assert i == 2
+
+~~~
+
+Sections name may contain any character including brackets (`[` and `]`).
+Spaces are trimmed.
+
+~~~
+ini = new IniFile.from_string("""
+[[section1]]
+key=value1
+[ section 2 ]
+key=value2
+[section1.section3]
+key=value3
+""")
+assert ini.sections.length == 3
+assert ini["[section1].key"] == "value1"
+assert ini["section 2.key"] == "value2"
+assert ini["section1.section3.key"] == "value3"
+assert ini.sections.last.name == "section1.section3"
+~~~
+
+The dot `.` notation is used to create new sections with `[]=`.
+Unknown sections will be created on the fly.
+
+~~~
+ini = new IniFile
+ini["key"] = "value1"
+ini["section1.key"] = "value2"
+ini["section2.key"] = "value3"
+
+stream = new StringWriter
+ini.write_to(stream)
+assert stream.to_s == """
+key=value1
+[section1]
+key=value2
+[section2]
+key=value3
+"""
+~~~
+
+Sections can also be created manually:
+
+~~~
+ini = new IniFile
+ini["key"] = "value1"
+
+var section = new IniSection("section1")
+section["key"] = "value2"
+ini.sections.add section
+
+stream = new StringWriter
+ini.write_to(stream)
+assert stream.to_s == """
+key=value1
+[section1]
+key=value2
+"""
+~~~
+
+### Comments
+
+Comments are indicated by semicolon (`;`) or a number sign (`#`) at the begining
+of the line. Commented lines are ignored as well as empty lines.
+
+~~~
+ini = new IniFile.from_string("""
+; This is a comment.
+; property1=value1
+
+# This is another comment.
+# property2=value2
+""")
+assert ini.is_empty
+~~~
+
+### Unicode support
+
+INI files support Unicode:
+
+~~~
+ini = new IniFile.from_string("""
+property❤=héhé
+""")
+assert ini["property❤"] == "héhé"
+~~~
+
+## Error handling
+
+By default `IniFile` does not stop when it cannot parse a line in a string (loaded
+by `from_string` or `load_string`) or a file (loaded by `from_file` or `load_file`).
+
+~~~
+ini = new IniFile.from_string("""
+key1=value1
+key2
+key3=value3
+""")
+
+assert ini.length == 2
+assert ini["key1"] == "value1"
+assert ini["key2"] == null
+assert ini["key3"] == "value3"
+~~~
+
+
+This behaviour can be modified by setting `stop_on_first_error` to `true`.
+
+~~~
+ini = new IniFile.from_string("""
+key1=value1
+key2
+key3=value3
+""", stop_on_first_error = true)
+
+assert ini.length == 1
+assert ini["key1"] == "value1"
+assert ini["key2"] == null
+assert ini["key3"] == null
+~~~
+
+Wathever the value set for `stop_on_first_error`, errors can be checked thanks
+to the `errors` array:
+
+~~~
+assert ini.errors.length == 1
+assert ini.errors.first.message == "Unexpected string `key2` at line 2."
+~~~
index 815995f..e965323 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Handle ini config files.
+# Read and write INI configuration files
 module ini
 
-# A configuration tree that can read and store data in ini format
+import core
+intrude import core::collection::hash_collection
+
+# Read and write INI configuration files
+#
+# In an INI file, properties (or keys) are associated to values thanks to the
+# equals symbol (`=`).
+# Properties may be grouped into section marked between brackets (`[` and `]`).
+#
+# ~~~
+# var ini_string = """
+# ; Example INI
+# key=value1
+# [section1]
+# key=value2
+# [section2]
+# key=value3
+# """
+# ~~~
+#
+# The main class, `IniFile`, can be created from an INI string and allows easy
+# access to its content.
+#
+# ~~~
+# # Read INI from string
+# var ini = new IniFile.from_string(ini_string)
+#
+# # Check keys presence
+# assert ini.has_key("key")
+# assert ini.has_key("section1.key")
+# assert not ini.has_key("not.found")
+#
+# # Access values
+# assert ini["key"] == "value1"
+# assert ini["section2.key"] == "value3"
+# assert ini["not.found"] == null
+#
+# # Access sections
+# assert ini.sections.length == 2
+# assert ini.section("section1")["key"] == "value2"
+# ~~~
 #
-# Write example:
+# `IniFile` can also be used to create new INI files from scratch, or edit
+# existing ones through its API.
 #
-#     var config = new ConfigTree("config.ini")
-#     config["goo"] = "goo"
-#     config["foo.bar"] = "foobar"
-#     config["foo.baz"] = "foobaz"
-#     config.save
-#     assert config.to_map.length == 3
+# ~~~
+# # Create a new INI file and write it to disk
+# ini = new IniFile
+# ini["key"] = "value1"
+# ini["section1.key"] = "value2"
+# ini["section2.key"] = "value3"
+# ini.write_to_file("my_config.ini")
 #
-# Read example:
+# # Load the INI file from disk
+# ini = new IniFile.from_file("my_config.ini")
+# assert ini["key"] == "value1"
+# assert ini["section1.key"] == "value2"
+# assert ini["section2.key"] == "value3"
 #
-#     config = new ConfigTree("config.ini")
-#     assert config.has_key("foo.bar")
-#     assert config["foo.bar"] == "foobar"
-class ConfigTree
+# "my_config.ini".to_path.delete
+# ~~~
+class IniFile
        super Writable
+       super HashMap[String, nullable String]
 
-       # The ini file used to read/store data
-       var ini_file: String
-
-       init do if ini_file.file_exists then load
+       # Create a IniFile from a `string` content
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key1=value1
+       # [section1]
+       # key2=value2
+       # """)
+       # assert ini["key1"] == "value1"
+       # assert ini["section1.key2"] == "value2"
+       # ~~~
+       #
+       # See also `stop_on_first_error` and `errors`.
+       init from_string(string: String, stop_on_first_error: nullable Bool) do
+               init stop_on_first_error or else false
+               load_string(string)
+       end
 
-       # Get the config value for `key`
-       #
-       #     var config = new ConfigTree("config.ini")
-       #     assert config["goo"] == "goo"
-       #     assert config["foo.bar"] == "foobar"
-       #     assert config["foo.baz"] == "foobaz"
-       #     assert config["fail.fail"] == null
-       fun [](key: String): nullable String do
-               var node = get_node(key)
-               if node == null then return null
-               return node.value
+       # Create a IniFile from a `file` content
+       #
+       # ~~~
+       # """
+       # key1=value1
+       # [section1]
+       # key2=value2
+       # """.write_to_file("my_config.ini")
+       #
+       # var ini = new IniFile.from_file("my_config.ini")
+       # assert ini["key1"] == "value1"
+       # assert ini["section1.key2"] == "value2"
+       #
+       # "my_config.ini".to_path.delete
+       # ~~~
+       #
+       # See also `stop_on_first_error` and `errors`.
+       init from_file(file: String, stop_on_first_error: nullable Bool) do
+               init stop_on_first_error or else false
+               load_file(file)
        end
 
-       # Get the config values under `key`
+       # Sections composing this IniFile
        #
-       #     var config = new ConfigTree("config.ini")
-       #     var values = config.at("foo")
-       #     assert values.has_key("bar")
-       #     assert values.has_key("baz")
-       #     assert not values.has_key("goo")
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # [section1]
+       # key1=value1
+       # [ section 2 ]
+       # key2=value2
+       # """)
+       # assert ini.sections.length == 2
+       # assert ini.sections.first.name == "section1"
+       # assert ini.sections.last.name == "section 2"
+       # ~~~
+       var sections = new Array[IniSection]
+
+       # Get a section by its `name`
        #
-       # Return null if the key does not exists.
+       # Returns `null` if the section is not found.
        #
-       #     assert config.at("fail.fail") == null
-       fun at(key: String): nullable Map[String, String] do
-               var node = get_node(key)
-               if node == null then return null
-               var map = new HashMap[String, String]
-               for k, child in node.children do
-                       var value = child.value
-                       if value == null then continue
-                       map[k] = value
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # [section1]
+       # key1=value1
+       # [section2]
+       # key2=value2
+       # """)
+       # assert ini.section("section1") isa IniSection
+       # assert ini.section("section2").name == "section2"
+       # assert ini.section("not.found") == null
+       # ~~~
+       fun section(name: String): nullable IniSection do
+               for section in sections do
+                       if section.name == name then return section
                end
-               return map
+               return null
        end
 
-       # Set `value` at `key`
-       #
-       #     var config = new ConfigTree("config.ini")
-       #     assert config["foo.bar"] == "foobar"
-       #     config["foo.bar"] = "baz"
-       #     assert config["foo.bar"] == "baz"
-       fun []=(key: String, value: nullable String) do
-               set_node(key, value)
+       # Does this file contains no properties and no sections?
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("")
+       # assert ini.is_empty
+       #
+       # ini = new IniFile.from_string("""
+       # key=value
+       # """)
+       # assert not ini.is_empty
+       #
+       # ini = new IniFile.from_string("""
+       # [section]
+       # """)
+       # assert not ini.is_empty
+       # ~~~
+       redef fun is_empty do return super and sections.is_empty
+
+       # Is there a property located at `key`?
+       #
+       # Returns `true` if the `key` is not found of if its associated value is `null`.
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key=value1
+       # [section1]
+       # key=value2
+       # [section2]
+       # key=value3
+       # """)
+       # assert ini.has_key("key")
+       # assert ini.has_key("section1.key")
+       # assert ini.has_key("section2.key")
+       # assert not ini.has_key("section1")
+       # assert not ini.has_key("not.found")
+       # ~~~
+       redef fun has_key(key) do return self[key] != null
+
+       # Get the value associated with a property (`key`)
+       #
+       # Returns `null` if the key is not found.
+       # Section properties can be accessed with the `.` notation.
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key=value1
+       # [section1]
+       # key=value2
+       # [section2]
+       # key=value3
+       # """)
+       # assert ini["key"] == "value1"
+       # assert ini["section1.key"] == "value2"
+       # assert ini["section2.key"] == "value3"
+       # assert ini["section1"] == null
+       # assert ini["not.found"] == null
+       # ~~~
+       redef fun [](key) do
+               if key == null then return null
+               key = key.to_s.trim
+
+               # Look in root
+               var node = node_at(key)
+               if node != null then return node.value
+
+               # Look in sections
+               for section in sections do
+                       # Matched if the section name is a prefix of the key
+                       if not key.has_prefix(section.name) then continue
+                       var skey = key.substring(section.name.length + 1, key.length)
+                       if section.has_key(skey) then return section[skey]
+               end
+               return null
        end
 
-       # Is `key` in the config?
-       #
-       #     var config = new ConfigTree("config.ini")
-       #     assert config.has_key("goo")
-       #     assert config.has_key("foo.bar")
-       #     assert not config.has_key("zoo")
-       fun has_key(key: String): Bool do
-               var parts = key.split(".").reversed
-               var node = get_root(parts.pop)
-               if node == null then return false
-               while not parts.is_empty do
-                       node = node.get_child(parts.pop)
-                       if node == null then return false
+       # Set the `value` for the property locaated at `key`
+       #
+       # ~~~
+       # var ini = new IniFile
+       # ini["key"] = "value1"
+       # ini["section1.key"] = "value2"
+       # ini["section2.key"] = "value3"
+       #
+       # assert ini["key"] == "value1"
+       # assert ini["section1.key"] == "value2"
+       # assert ini["section2.key"] == "value3"
+       # assert ini.section("section1").name == "section1"
+       # assert ini.section("section2")["key"] == "value3"
+       # ~~~
+       redef fun []=(key, value) do
+               if value == null then return
+               var parts = key.split_once_on(".")
+
+               # No dot notation, store value in root
+               if parts.length == 1 then
+                       super(key.trim, value.trim)
+                       return
+               end
+
+               # First part matches a section, store value in it
+               var section = self.section(parts.first.trim)
+               if section != null then
+                       section[parts.last.trim] = value.trim
+                       return
                end
-               return true
+
+               # No section matched, create a new one and store value in it
+               section = new IniSection(parts.first.trim)
+               section[parts.last.trim] = value.trim
+               sections.add section
        end
 
-       # Get `self` as a Map of `key`, `value`
-       #
-       #     var config = new ConfigTree("config.ini")
-       #     var map = config.to_map
-       #     assert map.has_key("goo")
-       #     assert map.has_key("foo.bar")
-       #     assert map.has_key("foo.baz")
-       #     assert map.length == 3
-       fun to_map: Map[String, String] do
+       # Flatten `self` and its subsection in a `Map` of keys => values
+       #
+       # Properties from section are prefixed with their section names with the
+       # dot (`.`) notation.
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key=value1
+       # [section]
+       # key=value2
+       # """)
+       # assert ini.flatten.join(", ", ": ") == "key: value1, section.key: value2"
+       # ~~~
+       fun flatten: Map[String, String] do
                var map = new HashMap[String, String]
-               for node in leaves do
-                       var value = node.value
+               for key, value in self do
                        if value == null then continue
-                       map[node.key] = value
+                       map[key] = value
+               end
+               for section in sections do
+                       for key, value in section do
+                               if value == null then continue
+                               map["{section.name}.{key}"] = value
+                       end
                end
                return map
        end
 
-       redef fun to_s do return to_map.join(", ", ":")
-
-       # Write `self` in `stream`
-       #
-       #     var config = new ConfigTree("config.ini")
-       #     var out = new StringWriter
-       #     config.write_to(out)
-       #     assert out.to_s == """
-       #     goo=goo
-       #     [foo]
-       #     bar=foobar
-       #     baz=foobaz
-       #     """
+       # Write `self` to a `stream`
+       #
+       # Key with `null` values are ignored.
+       # The empty string can be used to represent an empty value.
+       #
+       # ~~~
+       # var ini = new IniFile
+       # ini["key"] = "value1"
+       # ini["key2"] = null
+       # ini["key3"] = ""
+       # ini["section1.key"] = "value2"
+       # ini["section1.key2"] = null
+       # ini["section2.key"] = "value3"
+       #
+       # var stream = new StringWriter
+       # ini.write_to(stream)
+       #
+       # assert stream.to_s == """
+       # key=value1
+       # key3=
+       # [section1]
+       # key=value2
+       # [section2]
+       # key=value3
+       # """
+       # ~~~
        redef fun write_to(stream) do
-               var todo = new Array[ConfigNode].from(roots.reversed)
-               while not todo.is_empty do
-                       var node = todo.pop
-                       if node.children.not_empty then
-                               todo.add_all node.children.values.to_a.reversed
-                       end
-                       if node.children.not_empty and node.parent == null then
-                               stream.write("[{node.name}]\n")
-                       end
-                       var value = node.value
+               for key, value in self do
                        if value == null then continue
-                       var path = node.path
-                       if path.length > 1 then path.shift
-                       stream.write("{path.join(".")}={value}\n")
+                       stream.write "{key}={value}\n"
+               end
+               for section in sections do
+                       stream.write "[{section.name}]\n"
+                       for key, value in section do
+                               if value == null then continue
+                               stream.write "{key}={value}\n"
+                       end
                end
        end
 
-       # Reload config from file
-       # Done automatically at init
-       #
-       # Example with hierarchical ini file:
-       #
-       #     # init file
-       #     var str = """
-       #     foo.bar=foobar
-       #     foo.baz=foobaz
-       #     goo=goo"""
-       #     str.write_to_file("config1.ini")
-       #     # load file
-       #     var config = new ConfigTree("config1.ini")
-       #     assert config["foo.bar"] == "foobar"
-       #
-       # Example with sections:
-       #
-       #     # init file
-       #     str = """
-       #     goo=goo
-       #     [foo]
-       #     bar=foobar
-       #     baz=foobaz
-       #     [boo]
-       #     bar=boobar"""
-       #     str.write_to_file("config2.ini")
-       #     # load file
-       #     config = new ConfigTree("config2.ini")
-       #     assert config["foo.bar"] == "foobar"
-       #     assert config["boo.bar"] == "boobar"
-       #
-       # Example with both hierarchy and section:
-       #
-       #     # init file
-       #     str = """
-       #     goo=goo
-       #     [foo]
-       #     bar.baz=foobarbaz
-       #     [goo.boo]
-       #     bar=gooboobar
-       #     baz.bar=gooboobazbar"""
-       #     str.write_to_file("config3.ini")
-       #     # load file
-       #     config = new ConfigTree("config3.ini")
-       #     assert config["goo"] == "goo"
-       #     assert config["foo.bar.baz"] == "foobarbaz"
-       #     assert config["goo.boo.bar"] == "gooboobar"
-       #     assert config["goo.boo.baz.bar"] == "gooboobazbar"
-       #
-       # Using the array notation
-       #
-       #     str = """
-       #     foo[]=a
-       #     foo[]=b
-       #     foo[]=c"""
-       #     str.write_to_file("config4.ini")
-       #     # load file
-       #     config = new ConfigTree("config4.ini")
-       #     print config.to_map.join(":", ",")
-       #     assert config["foo.0"] == "a"
-       #     assert config["foo.1"] == "b"
-       #     assert config["foo.2"] == "c"
-       #     assert config.at("foo").values.join(",") == "a,b,c"
-       fun load do
-               roots.clear
-               var stream = new FileReader.open(ini_file)
-               var path: nullable String = null
-               var line_number = 0
+       # Read INI content from `string`
+       #
+       # ~~~
+       # var ini = new IniFile
+       # ini.load_string("""
+       # section1.key1=value1
+       # section1.key2=value2
+       # [section2]
+       # key=value3
+       # """)
+       # assert ini["section1.key1"] == "value1"
+       # assert ini["section1.key2"] == "value2"
+       # assert ini["section2.key"] == "value3"
+       # ~~~
+       #
+       # Returns `true` if the parsing finished correctly.
+       #
+       # See also `stop_on_first_error` and `errors`.
+       fun load_string(string: String): Bool do
+               var stream = new StringReader(string)
+               var last_section = null
+               var was_error = false
+               var i = 0
                while not stream.eof do
-                       var line = stream.read_line
-                       line_number += 1
+                       i += 1
+                       var line = stream.read_line.trim
                        if line.is_empty then
                                continue
                        else if line.has_prefix(";") then
                                continue
+                       else if line.has_prefix("#") then
+                               continue
                        else if line.has_prefix("[") then
-                               line = line.trim
-                               var key = line.substring(1, line.length - 2)
-                               path = key
-                               set_node(path, null)
+                               var section = new IniSection(line.substring(1, line.length - 2).trim)
+                               sections.add section
+                               last_section = section
+                               continue
                        else
                                var parts = line.split_once_on("=")
-                               if parts.length == 1 then
+                               if parts.length != 2 then
+                                       # FIXME silent skip?
+                                       # we definitely need exceptions...
+                                       was_error = true
+                                       errors.add new IniError("Unexpected string `{line}` at line {i}.")
+                                       if stop_on_first_error then return was_error
                                        continue
                                end
                                var key = parts[0].trim
-                               var val = parts[1].trim
-                               if path != null then key = "{path}.{key}"
-                               if key.has_suffix("[]") then
-                                       set_array(key, val)
+                               var value = parts[1].trim
+
+                               if last_section != null then
+                                       last_section[key] = value
                                else
-                                       set_node(key,val)
+                                       self[key] = value
                                end
                        end
                end
                stream.close
+               return was_error
        end
 
-       # Save config to file
-       fun save do write_to_file(ini_file)
-
-       private var roots = new Array[ConfigNode]
-
-       # Append `value` to array at `key`
-       private fun set_array(key: String, value: nullable String) do
-               key = key.substring(0, key.length - 2)
-               var len = 0
-               var node = get_node(key)
-               if node != null then len = node.children.length
-               set_node("{key}.{len.to_s}", value)
-       end
-
-       private fun set_node(key: String, value: nullable String) do
-               var parts = key.split(".").reversed
-               var k = parts.pop
-               var root = get_root(k)
-               if root == null then
-                       root = new ConfigNode(k)
-                       if parts.is_empty then
-                               root.value = value
-                       end
-                       roots.add root
-               end
-               while not parts.is_empty do
-                       k = parts.pop
-                       var node = root.get_child(k)
-                       if node == null then
-                               node = new ConfigNode(k)
-                               node.parent = root
-                               root.children[node.name] = node
-                       end
-                       if parts.is_empty then
-                               node.value = value
-                       end
-                       root = node
-               end
-       end
-
-       private fun get_node(key: String): nullable ConfigNode do
-               var parts = key.split(".").reversed
-               var node = get_root(parts.pop)
-               while node != null and not parts.is_empty do
-                       node = node.get_child(parts.pop)
-               end
-               return node
-       end
+       # Load a `file` content as INI
+       #
+       # New properties will be appended to the `self`, existing properties will be
+       # overwrote by the values contained in `file`.
+       #
+       # ~~~
+       # var ini = new IniFile
+       # ini["key1"] = "value1"
+       # ini["key2"] = "value2"
+       #
+       # """
+       # key2=changed
+       # key3=added
+       # """.write_to_file("load_config.ini")
+       #
+       # ini.load_file("load_config.ini")
+       # assert ini["key1"] == "value1"
+       # assert ini["key2"] == "changed"
+       # assert ini["key3"] == "added"
+       #
+       # "load_config.ini".to_path.delete
+       # ~~~
+       #
+       # The process fails silently if the file does not exist.
+       #
+       # ~~~
+       # ini = new IniFile
+       # ini.load_file("ini_not_found.ini")
+       # assert ini.is_empty
+       # ~~~
+       #
+       # Returns `true` if the parsing finished correctly.
+       #
+       # See also `stop_on_first_error` and `errors`.
+       fun load_file(file: String): Bool do return load_string(file.to_path.read_all)
 
-       private fun get_root(name: String): nullable ConfigNode do
-               for root in roots do
-                       if root.name == name then return root
-               end
-               return null
-       end
+       # Stop parsing on the first error
+       #
+       # By default, `load_string` will skip unparsable properties so the string can
+       # be loaded.
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key1=value1
+       # key2
+       # key3=value3
+       # """)
+    #
+       # assert ini.length == 2
+       # assert ini["key1"] == "value1"
+       # assert ini["key2"] == null
+       # assert ini["key3"] == "value3"
+       # ~~~
+       #
+       # Set `stop_on_first_error` to `true` to force the parsing to stop.
+       #
+       # ~~~
+       # ini = new IniFile
+       # ini.stop_on_first_error = true
+       # ini.load_string("""
+       # key1=value1
+       # key2
+       # key3=value3
+       # """)
+    #
+       # assert ini.length == 1
+       # assert ini["key1"] == "value1"
+       # assert ini["key2"] == null
+       # assert ini["key3"] == null
+       # ~~~
+       #
+       # See also `errors`.
+       var stop_on_first_error = false is optional, writable
 
-       private fun leaves: Array[ConfigNode] do
-               var res = new Array[ConfigNode]
-               var todo = new Array[ConfigNode]
-               todo.add_all roots
-               while not todo.is_empty do
-                       var node = todo.pop
-                       if node.children.is_empty then
-                               res.add node
-                       else
-                               todo.add_all node.children.values
-                       end
-               end
-               return res
-       end
+       # Errors found during parsing
+       #
+       # Wathever the value of `stop_on_first_error`, errors from parsing a string
+       # or a file are logged into `errors`.
+       #
+       # ~~~
+       # var ini = new IniFile.from_string("""
+       # key1=value1
+       # key2
+       # key3=value3
+       # """)
+    #
+       # assert ini.errors.length == 1
+       # assert ini.errors.first.message == "Unexpected string `key2` at line 2."
+       # ~~~
+       #
+       # `errors` is not cleared between two parsing:
+       #
+       # ~~~
+       # ini.load_string("""
+       # key4
+       # key5=value5
+       # """)
+    #
+       # assert ini.errors.length == 2
+       # assert ini.errors.last.message == "Unexpected string `key4` at line 1."
+       # ~~~
+       #
+       # See also `stop_on_first_error`.
+       var errors = new Array[IniError]
 end
 
-private class ConfigNode
-
-       var parent: nullable ConfigNode = null
-       var children = new HashMap[String, ConfigNode]
-       var name: String is writable
-       var value: nullable String = null
+# A section in a IniFile
+#
+# Section properties values are strings associated keys.
+# Sections cannot be nested.
+#
+# ~~~
+# var section = new IniSection("section")
+# section["key1"] = "value1"
+# section["key2"] = "value2"
+#
+# assert section.length == 2
+# assert section["key1"] == "value1"
+# assert section["not.found"] == null
+# assert section.join(", ", ": ") == "key1: value1, key2: value2"
+#
+# var i = 0
+# for key, value in section do
+#      assert key.has_prefix("key")
+#      assert value.has_prefix("value")
+#      i += 1
+# end
+# assert i == 2
+# ~~~
+class IniSection
+       super HashMap[String, nullable String]
 
-       fun key: String do
-               var parent = self.parent
-               if parent == null then
-                       return name
-               end
-               return "{parent.key}.{name}"
-       end
+       # Section name
+       var name: String
 
-       fun path: Array[String] do
-               var parent = self.parent
-               if parent == null then
-                       return [name]
-               end
-               var res = new Array[String].from(parent.path)
-               res.add name
-               return res
+       # Get the value associated with `key`
+       #
+       # Returns `null` if the `key` is not found.
+       #
+       # ~~~
+       # var section = new IniSection("section")
+       # section["key"] = "value1"
+       # section["sub.key"] = "value2"
+       #
+       # assert section["key"] == "value1"
+       # assert section["sub.key"] == "value2"
+       # assert section["not.found"] == null
+       # ~~~
+       redef fun [](key) do
+               if not has_key(key) then return null
+               return super
        end
+end
 
-       fun get_child(name: String): nullable ConfigNode do
-               if children.has_key(name) then
-                       return children[name]
-               end
-               return null
-       end
+# Error for `IniFile` parsing
+class IniError
+       super Error
 end
index 9611f06..07864ce 100644 (file)
@@ -3,7 +3,7 @@ name=ini
 tags=format,lib
 maintainer=Alexandre Terrasa <alexandre@moz-code.org>
 license=Apache-2.0
-desc=Handle ini config files
+desc=Read and write INI configuration files
 [upstream]
 browse=https://github.com/nitlang/nit/tree/master/lib/ini/
 git=https://github.com/nitlang/nit.git
diff --git a/lib/logger/logger.nit b/lib/logger/logger.nit
new file mode 100644 (file)
index 0000000..974ff9c
--- /dev/null
@@ -0,0 +1,402 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A simple logger for Nit
+#
+# ## Basic Usage
+#
+# Create a new `Logger` with a severity level threshold set to `warn_level`:
+#
+# ~~~
+# var logger = new Logger(warn_level)
+# ~~~
+#
+# Messages with a severity equal or higher than `warn_level` will be displayed:
+#
+# ~~~
+# logger.error "Displays an error."
+# logger.warn "Displays a warning."
+# ~~~
+#
+# Messages with a lower severity are silenced:
+#
+# ~~~
+# logger.info "Displays nothing."
+# ~~~
+#
+# `FileLogger` can be used to output the messages into a file:
+#
+# ~~~
+# var log_file = "my.log"
+#
+# logger = new FileLogger(warn_level, log_file, append = false)
+# logger.error("An error")
+# logger.info("Some info")
+# logger.close
+#
+# assert log_file.to_path.read_all == "An error\n"
+# log_file.to_path.delete
+# ~~~
+#
+# ## Severity levels
+#
+# Each message is associated with a level that indicate its severity.
+# Only messages with a severity equal to or higher than the logger `level`
+# threshold will be displayed.
+#
+# Severity levels from the most severe to the least severe:
+#
+# * `unknown_level`: An unknown message that should always be outputted.
+# * `fatal_level`: An unhandleable error that results in a program crash.
+# * `error_level`: A handleable error condition.
+# * `warn_level`: A warning.
+# * `info_level`: Generic (useful) information about system operation.
+# * `debug_level`: Low-level information for developpers.
+#
+# ## Formatting messages
+#
+# You can create custom formatters by implementing the `Formatter` interface.
+#
+# ~~~
+# class MyFormatter
+#      super Formatter
+#
+#      redef fun format(level, message) do
+#              if level < warn_level then return super
+#              return "!!!{message}!!!"
+#      end
+# end
+# ~~~
+#
+# See `DefaultFormatter` for a more advanced implementation example.
+#
+# Each Logger can be given a default formatter used to format the every messages
+# before outputting them:
+#
+# ~~~
+# var formatter = new MyFormatter
+# var stderr = new StringWriter
+# var logger = new Logger(warn_level, stderr, formatter)
+#
+# logger.warn("This is a warning.")
+# assert stderr.to_s.trim.split("\n").last == "!!!This is a warning.!!!"
+# ~~~
+#
+# Optionally, a `Formatter` can be given to replace the `default_formatter`
+# used by default:
+#
+# ~~~
+# # Create a formatter with no default decorator
+# logger = new Logger(warn_level, stderr, null)
+#
+# # Display a message without any formatter
+# logger.warn("This is a warning.")
+# assert stderr.to_s.trim.split("\n").last == "This is a warning."
+#
+# # Display a message with a custom formatter
+# logger.warn("This is a warning.", formatter)
+# assert stderr.to_s.trim.split("\n").last == "!!!This is a warning.!!!"
+# ~~~
+module logger
+
+import console
+
+# A simple logging utility
+#
+# `Logger` provides a simple way to output messages from applications.
+#
+# Each message is associated with a level that indicate its severity.
+# Only messages with a severity equal to or higher than the logger `level`
+# threshold will be displayed.
+#
+# ~~~
+# var logger = new Logger(warn_level)
+# assert logger.unknown("unkown")
+# assert logger.fatal("fatal")
+# assert logger.error("error")
+# assert logger.warn("warn")
+# assert not logger.info("info")
+# assert not logger.debug("debug")
+# ~~~
+class Logger
+
+       # Severity threshold
+       #
+       # Messages with a severity level greater than or equal to `level` will be displayed.
+       # Default is `warn_level`.
+       #
+       # See `unknown_level`, `fatal_level`, error_level``, `warn_level`,
+       # `info_level` and `debug_level`.
+       var level: Int = warn_level is optional, writable
+
+       # Kind of `Writer` used to output messages
+       type OUT: Writer
+
+       # Writer used to output messages
+       #
+       # Default is `stderr`.
+       var out: OUT = stderr is optional
+
+       # Formatter used to format messages before outputting them
+       #
+       # By default no formatter is used.
+       #
+       # See `DefaultFormatter`.
+       var default_formatter: nullable Formatter = null is optional, writable
+
+       # Output a message with `level` severity
+       #
+       # Only output messages with `level` severity greater than of equal to `self.level`.
+       #
+       # ~~~
+       # var stderr = new StringWriter
+       # var logger = new Logger(warn_level, stderr, null)
+       #
+       # # This message will be displayed:
+       # assert logger.warn("This is a warning.")
+       # assert stderr.to_s.trim.split("\n").last == "This is a warning."
+       #
+       # # This message will not:
+       # assert not logger.info("This is some info.")
+       # assert stderr.to_s.trim.split("\n").last == "This is a warning."
+       # ~~~
+       #
+       # Each logger can be given a default formatter used to format the messages
+       # before outputting them:
+       #
+       # ~~~
+       # var formatter = new DefaultFormatter(no_color = true)
+       # logger = new Logger(warn_level, stderr, formatter)
+       # logger.warn("This is a warning.")
+       # assert stderr.to_s.trim.split("\n").last == "Warning: This is a warning."
+       # ~~~
+       #
+       # Optionally, a `Formatter` can be given to replace the `default_formatter`
+       # used by default.
+       #
+       # ~~~
+       # # Create a formatter with no default decorator
+       # logger = new Logger(warn_level, stderr, null)
+       #
+       # # Display a message without any formatter
+       # logger.warn("This is a warning.")
+       # assert stderr.to_s.trim.split("\n").last == "This is a warning."
+       #
+       # # Display a message with a custom formatter
+       # logger.warn("This is a warning.", formatter)
+       # assert stderr.to_s.trim.split("\n").last == "Warning: This is a warning."
+       # ~~~
+       fun add(level: Int, message: Writable, formatter: nullable Formatter): Bool do
+               var format = formatter or else default_formatter
+               if format == null then
+                       return add_raw(level, message)
+               end
+               return add_raw(level, format.format(level, message))
+       end
+
+       # Output a message with `level` severity without formatting it
+       #
+       # Only output messages with `level` severity greater than of equal to `self.level`.
+       #
+       # ~~~
+       # var stderr = new StringWriter
+       # var logger = new Logger(warn_level, stderr, null)
+       #
+       # # This message will be displayed:
+       # assert logger.add_raw(warn_level, "This is a warning.")
+       # assert stderr.to_s.trim.split("\n").last == "This is a warning."
+       #
+       # # This message will not:
+       # assert not logger.add_raw(info_level, "This is some info.")
+       # assert stderr.to_s.trim.split("\n").last == "This is a warning."
+       # ~~~
+       fun add_raw(level: Int, message: Writable): Bool do
+               if level < self.level then return false
+               out.write(message.write_to_string)
+               out.write("\n")
+               return true
+       end
+
+       # Output a message with `unknown_level` severity
+       #
+       # Unkown severity messages are always outputted.
+       fun unknown(message: String, formatter: nullable Formatter): Bool do
+               return add(unknown_level, message, formatter)
+       end
+
+       # Output a message with `fatal_level` severity
+       fun fatal(message: String, formatter: nullable Formatter): Bool do
+               return add(fatal_level, message, formatter)
+       end
+
+       # Output a message with `error_level` severity
+       fun error(message: String, formatter: nullable Formatter): Bool do
+               return add(error_level, message, formatter)
+       end
+
+       # Output a message with `warn_level` severity
+       fun warn(message: String, formatter: nullable Formatter): Bool do
+               return add(warn_level, message, formatter)
+       end
+
+       # Output a message with `info_level` severity
+       fun info(message: String, formatter: nullable Formatter): Bool do
+               return add(info_level, message, formatter)
+       end
+
+       # Output a message with `debug` severity
+       fun debug(message: String, formatter: nullable Formatter): Bool do
+               return add(debug_level, message, formatter)
+       end
+end
+
+# Log messages to a file
+#
+# ~~~
+# var log_file = "my_file.log"
+# var logger = new FileLogger(warn_level, log_file, append = false)
+# logger.error("An error")
+# logger.info("Some info")
+# logger.close
+# assert log_file.to_path.read_all == "An error\n"
+#
+# logger = new FileLogger(warn_level, log_file, append = true)
+# logger.error("Another error")
+# logger.close
+# assert log_file.to_path.read_all == "An error\nAnother error\n"
+#
+# log_file.to_path.delete
+# ~~~
+class FileLogger
+       super Logger
+       autoinit level, file, append, default_formatter
+
+       redef type OUT: FileWriter
+
+       # File where messages will be written
+       var file: String
+
+       # Append messages to `file`
+       #
+       # If `append` is `false`, the `file` will be overwritten.
+       var append: Bool = true is optional
+
+       init do
+               var old = null
+               if append then
+                       old = file.to_path.read_all
+               end
+               out = new FileWriter.open(file)
+               out.set_buffering_mode(0, buffer_mode_line)
+               if old != null then
+                       out.write(old)
+               end
+       end
+
+       # Close the logger and its `file`
+       fun close do out.close
+end
+
+# Format messages before outputing them
+#
+# A `Logger` can use a `Formatter` to format the messages before outputting them.
+#
+# See `DefaultFormatter`.
+interface Formatter
+
+       # Format `message` depending of its severity `level`
+       fun format(level: Int, message: Writable): Writable do return message
+end
+
+# Default `Logger` formatter
+#
+# The default formatter decorates the messages with severity labels and colors.
+class DefaultFormatter
+       super Formatter
+
+       # Do not decorate messages with colors
+       #
+       # ~~~
+       # var formatter = new DefaultFormatter(no_color = true)
+       # assert formatter.format(error_level, "My message.") == "Error: My message."
+       # ~~~
+       var no_color = false is optional, writable
+
+       redef fun format(level, message) do
+               var string = message.write_to_string
+
+               if level == fatal_level then
+                       string = "Fatal: {string}"
+               else if level == error_level then
+                       string = "Error: {string}"
+               else if level == warn_level then
+                       string = "Warning: {string}"
+               else if level == info_level then
+                       string = "Info: {string}"
+               else if level == debug_level then
+                       string = "Debug: {string}"
+               end
+
+               if no_color then return string
+
+               if level == fatal_level then
+                       return string.red
+               else if level == error_level then
+                       return string.red
+               else if level == warn_level then
+                       return string.yellow
+               else if level == info_level then
+                       return string.purple
+               else if level == debug_level then
+                       return string.blue
+               end
+
+               return string
+       end
+end
+
+redef class Sys
+
+       # Unknown severity level
+       #
+       # These messages are always displayed.
+       #
+       # See `Logger`.
+       var unknown_level = 5
+
+       # Fatal severity level
+       #
+       # See `Logger`.
+       var fatal_level = 4
+
+       # Error severity level
+       #
+       # See `Logger`.
+       var error_level = 3
+
+       # Warning severity level
+       #
+       # See `Logger`.
+       var warn_level = 2
+
+       # Info severity level
+       #
+       # See `Logger`.
+       var info_level = 1
+
+       # Debug severity level
+       #
+       # See `Logger`.
+       var debug_level = 0
+end
similarity index 56%
rename from contrib/wiringPi/package.ini
rename to lib/logger/package.ini
index a5d2eb8..f4ba7bd 100644 (file)
@@ -1,12 +1,12 @@
 [package]
-name=wiringPi
-tags=embedded,wrapper
+name=logger
+tags=logging,lib
 maintainer=Alexandre Terrasa <alexandre@moz-code.org>
 license=Apache-2.0
-desc=wiringPi nit wrapper
+desc=A simple logger for Nit
 [upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/wiringPi/
+browse=https://github.com/nitlang/nit/tree/master/lib/logger/
 git=https://github.com/nitlang/nit.git
-git.directory=contrib/wiringPi/
+git.directory=lib/logger/
 homepage=http://nitlanguage.org
 issues=https://github.com/nitlang/nit/issues
index 020e0ce..7db69e7 100644 (file)
@@ -640,11 +640,12 @@ class MongoCollection
        #
        # var res = col.aggregate("""[
        #       { "$match": { "status": "A" } },
-       #       { "$group": { "_id": "$cust_id", "total": { "$sum": "$amount" } } }
+       #       { "$group": { "_id": "$cust_id", "total": { "$sum": "$amount" } } },
+        #       { "$sort" : { "_id": 1 } }
        # ]""".parse_json.as(JsonArray))
        #
-       # assert res[0].to_json == """{"_id":"B212","total":200}"""
-       # assert res[1].to_json == """{"_id":"A123","total":750}"""
+        # assert res[0].to_json == """{"_id":"A123","total":750}"""
+       # assert res[1].to_json == """{"_id":"B212","total":200}"""
        # ~~~
        fun aggregate(pipeline: JsonArray): Array[JsonObject] do
                var q = new JsonObject
index f7c6346..50a0de6 100644 (file)
@@ -511,7 +511,7 @@ with the `use_before` method.
 Next, we’ll create a middleware handler called “LogHandler” that prints the requested
 uri, the response status and the time it took to Popcorn to process the request.
 
-This example gives a simplified version of the `RequestClock` and `ConsoleLog` middlewares.
+This example gives a simplified version of the `RequestClock` and `PopLogger` middlewares.
 
 ~~~
 import popcorn
@@ -584,7 +584,7 @@ Starting with version 0.1, Popcorn provide a set of built-in middleware that can
 be used to develop your app faster.
 
 * `RequestClock`: initializes requests clock.
-* `ConsoleLog`: displays resquest and response status in console (can be used with `RequestClock`).
+* `PopLogger`: displays resquest and response status in console (can be used with `RequestClock`).
 * `SessionInit`: initializes requests session (see the `Sessions` section).
 * `StaticServer`: serves static files (see the `Serving static files with Popcorn` section).
 * `Router`: a mountable mini-app (see the `Mountable routers` section).
index 3dd71fb..285d032 100644 (file)
@@ -199,7 +199,7 @@ class GithubOAuthCallBack
 
                # Load github user
                var gh_api = new GithubAPI(access_token)
-               var user = gh_api.load_auth_user
+               var user = gh_api.get_auth_user
                if user == null then
                        res.error 401
                        return
index ba3418f..6f0d154 100644 (file)
@@ -17,7 +17,7 @@
 module pop_logging
 
 import pop_handlers
-import console
+import logger
 import realtime
 
 # Initialize a clock for the resquest.
@@ -30,73 +30,71 @@ class RequestClock
 end
 
 # Display log info about request processing.
-class ConsoleLog
+class PopLogger
+       super Logger
        super Handler
 
-       # Logger level
-       #
-       # * `0`: silent
-       # * `1`: errors
-       # * `2`: warnings
-       # * `3`: info
-       # * `4`: debug
-       #
-       # Request status are always logged, whatever the logger level is.
-       var level = 4 is writable
-
        # Do we want colors in the console output?
-       var no_colors = false
+       var no_color = false is optional
+
+       redef var default_formatter = new PopFormatter(no_color) is optional
 
        redef fun all(req, res) do
                var clock = req.clock
                if clock != null then
-                       log "{req.method} {req.url} {status(res)} ({clock.total}s)"
+                       add_raw(info_level, "{req.method} {req.url} {status(res)} ({clock.total}s)")
                else
-                       log "{req.method} {req.url} {status(res)}"
+                       add_raw(info_level, "{req.method} {req.url} {status(res)}")
                end
        end
 
        # Colorize the request status.
        private fun status(res: HttpResponse): String do
-               if no_colors then return res.status_code.to_s
+               if no_color then return res.status_code.to_s
                return res.color_status
        end
+end
 
-       # Display a `message` with `level`.
-       #
-       # Message will only be displayed if `level <= self.level`.
-       # Colors will be used depending on `colors`.
-       #
-       # Use `0` for no coloration.
-       private fun display(level: Int, message: String) do
-               if level > self.level then return
-               if no_colors then
-                       print message
-                       return
+class PopFormatter
+       super Formatter
+
+       # Do not decorate messages with colors
+       var no_color = false is optional, writable
+
+       redef fun format(level, message) do
+               var string = message.write_to_string
+
+               if level == fatal_level then
+                       string = "[FATAL] {string}"
+               else if level == error_level then
+                       string = "[ERROR] {string}"
+               else if level == warn_level then
+                       string = "[WARN] {string}"
+               else if level == info_level then
+                       string = "[INFO] {string}"
+               else if level == debug_level then
+                       string = "[DEBUG] {string}"
                end
-               if level == 0 then print message
-               if level == 1 then print message.red
-               if level == 2 then print message.yellow
-               if level == 3 then print message.blue
-               if level == 4 then print message.gray
-       end
-
-       # Display a message wathever the `level`
-       fun log(message: String) do display(0, message)
 
-       # Display a red error `message`.
-       fun error(message: String) do display(1, "[ERROR] {message}")
-
-       # Display a yellow warning `message`.
-       fun warning(message: String) do display(2, "[WARN] {message}")
-
-       # Display a blue info `message`.
-       fun info(message: String) do display(3, "[INFO] {message}")
+               if no_color then return string
+
+               if level == fatal_level then
+                       return string.red
+               else if level == error_level then
+                       return string.red
+               else if level == warn_level then
+                       return string.yellow
+               else if level == info_level then
+                       return string.blue
+               else if level == debug_level then
+                       return string.gray
+               end
 
-       # Display a gray debug `message`.
-       fun debug(message: String) do display(4, "[DEBUG] {message}")
+               return string
+       end
 end
 
+
 redef class HttpRequest
        # Time that request was received by the Popcorn app.
        var clock: nullable Clock = null
index 9ecf5b7..f43b100 100644 (file)
@@ -46,7 +46,6 @@ module pop_tracker
 
 import popcorn
 import popcorn::pop_config
-import popcorn::pop_logging
 import popcorn::pop_json
 import popcorn::pop_repos
 
@@ -91,7 +90,6 @@ end
 
 # Saves logs into a MongoDB collection
 class PopTracker
-       super ConsoleLog
        super TrackerHandler
 
        redef fun all(req, res) do
index 3c5ae98..a8b4bbc 100644 (file)
@@ -421,6 +421,14 @@ class ConcurrentArray[E]
                mutex.unlock
        end
 
+       redef fun has(e)
+       do
+               mutex.lock
+               var result = real_collection.has(e)
+               mutex.unlock
+               return result
+       end
+
        #
        ## The following method defs are conflict resolutions
        #
index e4ba62b..69dbc45 100644 (file)
@@ -13,6 +13,7 @@ RUN dpkg --add-architecture i386 \
                graphviz \
                libunwind-dev \
                pkg-config \
+               libicu-dev \
                # Get the code!
                git \
                ca-certificates \
index eff6232..64d8c53 100644 (file)
@@ -539,6 +539,15 @@ Force lazy semantic analysis of the source-code.
 Analysis of methods is thus done only when required.
 This option breaks the behavior of most of the tools since errors in methods are undetected until the method is required in some processing.
 
+## Contract
+By default the contracts can be defined as "semi-global". I.E. All contracts (ensures, expects) used in the main package are enabled, the `expects` contracts are enabled (`ensures` contracts are disable) in direct imported package. Other indirected imported package has no active contract.
+
+### `--no-contract`
+Option used to disable the contracts(ensures, expects) usage.
+
+### `--full-contract`
+Option used to enables contracts (ensures, expects) on all classes. Warning this is an expensive option at runtime.
+
 # ENVIRONMENT VARIABLES
 
 ### `NIT_DIR`
index 81153c7..0a51e03 100644 (file)
@@ -109,7 +109,7 @@ pre {
        color: #333;
 }
 
-.nitdoc .synopsys {
+.nitdoc .synopsis {
        margin-top: 0;
 }
 
index 63a1356..4c61f1e 100644 (file)
@@ -22,7 +22,7 @@
        color: #333;
 }
 
-.nitdoc .synopsys {
+.nitdoc .synopsis {
        margin-top: 0;
 }
 
index ccfcdd0..9e4fc8d 100644 (file)
@@ -73,7 +73,7 @@ entity-list:hover .btn-filter {
 
 /* doc */
 
-.nitdoc .synopsys {
+.nitdoc .synopsis {
        margin-top: 0;
 }
 
index 8086bfd..dcf9b82 100644 (file)
 
 NITCOPT=--semi-global
 OLDNITCOPT=--semi-global
-OBJS=nitc nitpick nit nitls nitunit nitpm nitx nitlight nitserial nitrestful nitpackage
+OBJS=nitc nitpick nit nitls nitunit nitx nitlight nitserial nitrestful nitpackage
 SRCS=$(patsubst %,%.nit,$(OBJS))
 BINS=$(patsubst %,../bin/%,$(OBJS))
-MOREOBJS=nitdoc nitweb nitcatalog nitmetrics nitpretty nitweb
+MOREOBJS=nitdoc nitweb nitcatalog nitmetrics nitpretty nitweb nitpm
 MORESRCS=$(patsubst %,%.nit,$(MOREOBJS))
 MOREBINS=$(patsubst %,../bin/%,$(MOREOBJS))
 DEPS=$(wildcard *.nit */*.nit) parser/parser.nit
index 240e00b..681c4bf 100644 (file)
@@ -19,6 +19,7 @@ intrude import semantize::typing
 intrude import literal
 intrude import parser
 intrude import semantize::scope
+intrude import modelbuilder_base
 
 # General factory to build semantic nodes in the AST of expressions
 class ASTBuilder
@@ -116,14 +117,14 @@ class ASTBuilder
        end
 
        # Make a new method
-       fun make_method(n_visibility: nullable APublicVisibility,
+       fun make_method(n_visibility: nullable AVisibility,
                                        tk_redef: nullable TKwredef,
-                                       mmethoddef: MMethodDef,
+                                       mmethoddef: nullable MMethodDef,
                                        n_signature: nullable ASignature,
                                        n_annotations: nullable AAnnotations,
                                        n_extern_calls: nullable AExternCalls,
                                        n_extern_code_block: nullable AExternCodeBlock,
-                                       n_block: AExpr): AMethPropdef
+                                       n_block: nullable AExpr): AMethPropdef
        do
                return new AMethPropdef.make(n_visibility, tk_redef, mmethoddef, n_signature, n_annotations, n_extern_calls, n_extern_code_block, n_block)
        end
@@ -157,6 +158,23 @@ class ASTBuilder
        do
                return new AReturnExpr.make(expr)
        end
+
+       # Make a new not
+       fun make_not(expr: AExpr): ANotExpr
+       do
+               return new ANotExpr.make(expr)
+       end
+
+       # Build a callsite to call the `mproperty` in the current method `caller_method`.
+       # `is_self_call` indicate if the method caller is a property of `self`
+       fun create_callsite(modelbuilder: ModelBuilder, caller_method : AMethPropdef, mproperty: MMethod, is_self_call: Bool): CallSite
+       do
+               # FIXME It's not the better solution to call `TypeVisitor` here to build a model entity, but some make need to have a callsite
+               var type_visitor = new TypeVisitor(modelbuilder, caller_method.mpropdef.as(not null))
+               var callsite = type_visitor.build_callsite_by_property(caller_method, mproperty.intro_mclassdef.bound_mtype, mproperty, is_self_call)
+               assert callsite != null
+               return callsite
+       end
 end
 
 redef class AExpr
@@ -244,6 +262,13 @@ class APlaceholderExpr
        end
 end
 
+redef class ANotExpr
+       private init make(expr: AExpr)
+       do
+               self.init_anotexpr(new TKwnot, expr)
+       end
+end
+
 redef class AReturnExpr
        private init make(expr: nullable AExpr)
        do
@@ -252,24 +277,17 @@ redef class AReturnExpr
 end
 
 redef class ASuperExpr
-       private init make(args: nullable Array[AExpr], n_qualified: nullable AQualified)
+       private init make(args: nullable Array[AExpr], n_qualified: nullable AQualified, mpropdef: nullable MMethodDef)
        do
                var n_args = new AListExprs
                if args != null then
                        n_args.n_exprs.add_all(args)
                end
+               _mpropdef = mpropdef
                self.init_asuperexpr(n_qualified, new TKwsuper, n_args)
        end
 end
 
-redef class AParExpr
-       private init make(expr: AExpr, annotations: nullable AAnnotations)
-       do
-               self.location = expr.location
-               self.init_aparexpr(new TOpar, expr, new TCpar, annotations)
-       end
-end
-
 redef class AOrExpr
        private init make(right_expr: AExpr, left_expr: AExpr)
        do
@@ -285,9 +303,9 @@ redef class AAndExpr
 end
 
 redef class AMethPropdef
-       private init make(n_visibility: nullable APublicVisibility,
+       private init make(n_visibility: nullable AVisibility,
                                        tk_redef: nullable TKwredef,
-                                       mmethoddef: MMethodDef,
+                                       mmethoddef: nullable MMethodDef,
                                        n_signature: nullable ASignature,
                                        n_annotations: nullable AAnnotations,
                                        n_extern_calls: nullable AExternCalls,
@@ -295,7 +313,6 @@ redef class AMethPropdef
                                        n_block: nullable AExpr)
        do
                var n_tid = new TId
-               n_tid.text = mmethoddef.name
                var n_methid = new AIdMethid.init_aidmethid(n_tid)
                if n_signature == null then n_signature = new ASignature
                if n_visibility == null then n_visibility = new APublicVisibility
@@ -314,18 +331,6 @@ redef class AAssertExpr
        end
 end
 
-redef class ABlockExpr
-       private init make
-       do
-               self.is_typed = true
-       end
-
-       redef fun add(expr)
-       do
-               n_expr.add expr
-       end
-end
-
 redef class ALoopExpr
        private init make
        do
@@ -388,26 +393,108 @@ redef class AIfExpr
                _n_kwelse = new TKwelse
                _n_else = new ABlockExpr.make
                self.mtype = mtype
-               self.is_typed = true
+               if mtype != null then self.is_typed = true
        end
 end
 
 redef class AType
-       private init make
+
+       private init make(t: nullable MType)
        do
                var n_id = new TClassid
                var n_qid = new AQclassid
                n_qid.n_id = n_id
                _n_qid = n_qid
+               _mtype = t
+       end
+
+       redef fun clone: SELF
+       do
+               return new AType.make(mtype)
        end
 end
 
+# Primitive type
+
 redef class AIntegerExpr
-       private init make(value: Int, t: MType)
+
+       private init make(value: nullable Numeric, t: nullable MType)
        do
-               self.value = value
-               self._n_integer = new TInteger # dummy
-               self.mtype = t
+               _mtype = t
+               if t != null then self.is_typed = true
+               _value = value
+               _n_integer = new TInteger # dummy
+       end
+
+       redef fun clone: SELF
+       do
+               return new AIntegerExpr.make(value, mtype)
+       end
+end
+
+redef class AFloatExpr
+
+       private init make(value: nullable Float, t: nullable MType)
+       do
+               _mtype = t
+               if t != null then self.is_typed = true
+               _value = value
+               _n_float = new TFloat # dummy
+       end
+
+       redef fun clone: SELF
+       do
+               return new AFloatExpr.make(value, mtype)
+       end
+end
+
+redef class ATrueExpr
+
+       private init make(t: nullable MType)
+       do
+               init_atrueexpr(new TKwtrue, null)
+               _mtype = t
+               if t != null then self.is_typed = true
+       end
+
+       redef fun clone: SELF
+       do
+               return new ATrueExpr.make(mtype)
+       end
+end
+
+redef class AFalseExpr
+
+       private init make(t: nullable MType)
+       do
+               init_afalseexpr(new TKwfalse, null)
+               _mtype = t
+               if t != null then self.is_typed = true
+       end
+
+       redef fun clone: SELF
+       do
+               return new AFalseExpr.make(mtype)
+       end
+end
+
+redef class ACharExpr
+
+       # `token_text` represent the real value as it's present in a file not only the char.
+       # `token_text` is needed if you want to use some methods (for exemple: `prefix`, `suffix` or `is_code_point methods`)
+       private init make(value: nullable Char, t: nullable MType, token_text: nullable String)
+       do
+               _value = value
+               _mtype = t
+               _n_char = new TChar
+               if token_text != null then n_char.text = token_text
+               if t != null then self.is_typed = true
+       end
+
+       redef fun clone: SELF
+       do
+               var self_clone = new ACharExpr.make(self.value, mtype, n_char.text)
+               return self_clone
        end
 end
 
@@ -432,7 +519,7 @@ redef class ANewExpr
 end
 
 redef class ACallExpr
-       private init make(recv: AExpr, callsite: CallSite, args: nullable Array[AExpr])
+       private init make(recv: AExpr, callsite: nullable CallSite, args: nullable Array[AExpr])
        do
                self._n_expr = recv
                _n_args = new AListExprs
@@ -442,25 +529,81 @@ redef class ACallExpr
                if args != null then
                        self.n_args.n_exprs.add_all(args)
                end
-               self.callsite = callsite
-               self.mtype = callsite.msignature.return_mtype
-               self.is_typed = true
+
+               if callsite != null then
+                       self.callsite = callsite
+                       self.mtype = callsite.msignature.return_mtype
+                       self.is_typed = true
+               end
+       end
+end
+
+redef class AAsCastExpr
+       private init make(n_expr: AExpr, n_type: AType)
+       do
+               init_aascastexpr(n_expr, new TKwas , null , n_type, null)
+       end
+end
+
+redef class AAsNotnullExpr
+       private init make(n_expr: AExpr, t: nullable MType)
+       do
+               init_aasnotnullexpr(n_expr, new TKwas, null, new TKwnot, new TKwnull, null)
+               _mtype = t
+               if t != null then _is_typed = true
+       end
+end
+
+redef class ANullExpr
+
+       private init make(t: nullable MType)
+       do
+               init_anullexpr(new TKwnull, null)
+               _mtype = t
+               if t != null then self.is_typed = true
+       end
+end
+
+redef class ASelfExpr
+
+       private init make(v: nullable Variable, t: nullable MType)
+       do
+               init_aselfexpr(new TKwself, null)
+               _mtype = t
+               if t != null then is_typed =true
+       end
+
+       redef fun clone: SELF
+       do
+               return new ASelfExpr.make(self.variable, self.mtype)
        end
 end
 
+redef class AImplicitSelfExpr
+
+       redef fun clone: SELF
+       do
+               var self_clone = new AImplicitSelfExpr.make(variable, mtype)
+               self_clone.is_sys = is_sys
+               return self_clone
+       end
+end
+
+
 redef class AAttrExpr
-       private init make(recv: AExpr, attribute: MAttribute, t: MType)
+       private init make(recv: AExpr, attribute: nullable MAttribute, t: nullable MType)
        do
                _n_expr = recv
                recv.parent = self
                _n_id = new TAttrid
-               mproperty = attribute
-               mtype = t
+               _mproperty = attribute
+               _mtype = t
+               if t != null then _is_typed = true
        end
 end
 
 redef class AAttrAssignExpr
-       private init make(recv: AExpr, attribute: MAttribute, value: AExpr)
+       private init make(recv: AExpr, attribute: nullable MAttribute, value: AExpr)
        do
                _n_expr = recv
                recv.parent = self
@@ -468,29 +611,128 @@ redef class AAttrAssignExpr
                _n_value = value
                value.parent = self
                _n_assign = new TAssign
-               mproperty = attribute
-               mtype = value.mtype
+               _mproperty = attribute
+               _mtype = value.mtype
        end
 end
 
 redef class AVarExpr
-       private init make(v: Variable, mtype: MType)
+       private init make(v: nullable Variable, t: nullable MType)
        do
                _n_id = new TId
-               variable = v
-               self.mtype = mtype
+               if v != null then _n_id.text = v.name
+               _variable = v
+               _mtype = t
+               if t != null then is_typed = true
        end
 end
 
 redef class AVarAssignExpr
-       private init make(v: Variable, value: AExpr)
+       private init make(v: nullable Variable, value: AExpr)
        do
                _n_id = new TId
+               if v != null then _n_id.text = v.name
                _n_value = value
                value.parent = self
                _n_assign = new TAssign
-               variable = v
-               mtype = value.mtype
+               _variable = v
+               _mtype = value.mtype
+               if _mtype != null then _is_typed = true
+       end
+end
+
+redef class ASignature
+       redef fun clone: SELF
+       do
+               var ntype = n_type
+               if ntype != null then ntype = n_type.clone
+               return new ASignature.init_asignature(null, n_params.clone, null, ntype)
+       end
+end
+
+redef class AParam
+
+       private init make(v: nullable Variable, t: nullable AType)
+       do
+               _n_id = new TId
+               _variable = v
+               _n_type = t
+       end
+
+       redef fun clone: SELF
+       do
+               var ntype = n_type
+               if ntype != null then ntype = n_type.clone
+               return new AParam.make(variable, ntype)
+       end
+end
+
+redef class ABlockExpr
+       private init make(t: nullable MType)
+       do
+               if t != null then
+                       _mtype = t
+                       _is_typed = true
+               end
+       end
+
+       redef fun add(expr)
+       do
+               n_expr.add expr
+               expr.parent = self
+       end
+
+       fun add_all(exprs: Array[AExpr])
+       do
+               for expr in exprs do
+                       add(expr)
+               end
+       end
+
+       redef fun clone: SELF
+       do
+               var clone = new ABlockExpr.make(mtype)
+               for expr in self.n_expr do
+                       clone.add(expr.clone)
+               end
+               return clone
+       end
+end
+
+redef class AQclassid
+       redef fun clone: SELF
+       do
+               return new AQclassid.init_aqclassid(n_qualified.clone, n_id)
+       end
+end
+
+redef class AQualified
+       redef fun clone: SELF
+       do
+               return new AQualified.init_aqualified(n_id.clone, n_classid)
+       end
+end
+
+redef class AQid
+       redef fun clone: SELF
+       do
+               var clone_n_qualified = n_qualified
+               if n_qualified != null then clone_n_qualified = n_qualified.clone
+               return new AQid.init_aqid(clone_n_qualified, n_id.clone)
+       end
+end
+
+redef class TId
+       redef fun clone: SELF
+       do
+               return new TId.init_tk(location)
+       end
+end
+
+redef class AParExpr
+       private init make(expr: AExpr, annotations: nullable AAnnotations)
+       do
+               self.init_aparexpr(new TOpar, expr, new TCpar, annotations)
        end
 end
 
@@ -505,7 +747,28 @@ class ASTValidationVisitor
        private var seen = new HashSet[ANode]
 end
 
+redef class ANodes
+       super Cloneable
+
+       redef fun clone: SELF
+       do
+               var clone_anodes = new ANodes[E](self.parent)
+               for node in self do
+                       clone_anodes.add(node.clone)
+               end
+               return clone_anodes
+       end
+end
+
 redef class ANode
+       super Cloneable
+
+       redef fun clone: SELF
+       do
+               # By default the clone abort to avoid surprises
+               print "The clone method is not implemented for the `{self.class_name}` class"
+               abort
+       end
        # Recursively validate a AST node.
        # This ensure that location and parenting are defined and coherent.
        #
@@ -552,8 +815,15 @@ redef class ANode
 end
 
 redef class AAnnotation
+
        redef fun accept_ast_validation(v)
        do
                # Do not enter in annotations
        end
+
+       private init make(n_args : ANodes[AExpr])
+       do
+               _n_visibility = new APublicVisibility
+               _n_args = n_args
+       end
 end
index 140278e..fa957e1 100644 (file)
@@ -266,7 +266,7 @@ class Catalog
        var contrib2proj = new MultiHashMap[Person, MPackage]
 
        # Dependency between packages
-       var deps = new POSet[MPackage]
+       fun deps: HashDigraph[MPackage] do return modelbuilder.model.mpackage_importation_graph
 
        # Number of modules by package
        var mmodules = new Counter[MPackage]
@@ -382,11 +382,11 @@ class Catalog
                        cat2proj[cat].add mpackage
                        score += tags.length.score
                end
-               if deps.has(mpackage) then
-                       score += deps[mpackage].greaters.length.score
-                       score += deps[mpackage].direct_greaters.length.score
-                       score += deps[mpackage].smallers.length.score
-                       score += deps[mpackage].direct_smallers.length.score
+               if deps.has_vertex(mpackage) then
+                       score += deps.predecessors(mpackage).length.score
+                       score += deps.get_all_predecessors(mpackage).length.score
+                       score += deps.successors(mpackage).length.score
+                       score += deps.get_all_successors(mpackage).length.score
                end
 
                var contributors = mpackage.metadata.contributors
index e786374..77a20f4 100644 (file)
@@ -196,7 +196,7 @@ class MakefileToolchain
                var time1 = get_time
                self.toolcontext.info("*** END WRITING C: {time1-time0} ***", 2)
 
-               if not toolcontext.check_errors then return
+               toolcontext.check_errors
 
                # Execute the Makefile
 
@@ -625,6 +625,20 @@ abstract class AbstractCompiler
        # The targeted specific platform
        var target_platform: Platform is noinit
 
+       # All methods who already has a callref_thunk generated for
+       var compiled_callref_thunk = new HashSet[MMethodDef]
+
+       var all_routine_types_name: Set[String] do
+               var res = new HashSet[String]
+               for name in ["Fun", "Proc", "FunRef", "ProcRef"] do
+                       # Currently there's 20 arity per func type
+                       for i in [0..20[ do
+                               res.add("{name}{i}")
+                       end
+               end
+               return res
+       end
+
        init
        do
                self.realmainmodule = mainmodule
@@ -1377,6 +1391,12 @@ abstract class AbstractCompilerVisitor
        # The method is unsafe and is just a direct wrapper for the specific implementation of native arrays
        fun native_array_set(native_array: RuntimeVariable, index: Int, value: RuntimeVariable) is abstract
 
+       # Instantiate a new routine pointer
+       fun routine_ref_instance(routine_mclass_type: MClassType, recv: RuntimeVariable, callsite: CallSite): RuntimeVariable is abstract
+
+       # Call the underlying referenced function
+       fun routine_ref_call(mmethoddef: MMethodDef, args: Array[RuntimeVariable]) is abstract
+
        # Allocate `size` bytes with the low_level `nit_alloc` C function
        #
        # This method can be redefined to inject statistic or tracing code.
@@ -1776,10 +1796,10 @@ abstract class AbstractCompilerVisitor
        # Generate a float value
        #
        # FIXME pass a Float, not a string
-       fun float_instance(value: String): RuntimeVariable
+       fun float_instance(value: Float): RuntimeVariable
        do
                var t = mmodule.float_type
-               var res = new RuntimeVariable("{value}", t, t)
+               var res = new RuntimeVariable("{value.to_hexa_exponential_notation}", t, t)
                return res
        end
 
@@ -2056,7 +2076,26 @@ abstract class AbstractCompilerVisitor
 end
 
 # A C function associated to a Nit method
-# Because of customization, a given Nit method can be compiler more that once
+# This is the base class for all runtime representation of a nit method.
+# It implements the Template Design Pattern whose steps are :
+#       1. create the receiver `RuntimeVariable` (selfvar)
+#       2. create a `StaticFrame`
+#       3. resolve the return type.
+#       4. write the function signature
+#       5. Declare the function signature (for C header files)
+#       6. writer the function body
+#       7. post-compiler hook (optional)
+# Each step is called in `AbstractRuntimeFunction::compile_to_c`. A default
+# body is provided foreach step except for compilation hooks. Subclasses may
+# redefine any of the above mentioned steps. However, it's not recommanded
+# to override `compile_to_c` since there's an ordering of the compilation steps.
+# Any information between steps must be saved in the visitor. Currently most
+# of the future runtime info are stored in the `StaticFrame` of the visitor,
+# e.g. the receiver (selfvar), the arguments, etc.
+#
+# Moreover, any subclass may redefine : the receiver type, the return type and
+# the signature. This allow for a better customization for the final implementation.
+# Because of customization, a given Nit method can be compile more that once.
 abstract class AbstractRuntimeFunction
 
        type COMPILER: AbstractCompiler
@@ -2065,6 +2104,8 @@ abstract class AbstractRuntimeFunction
        # The associated Nit method
        var mmethoddef: MMethodDef
 
+       protected var return_mtype: nullable MType = null
+
        # The mangled c name of the runtime_function
        # Subclasses should redefine `build_c_name` instead
        fun c_name: String
@@ -2076,6 +2117,8 @@ abstract class AbstractRuntimeFunction
                return res
        end
 
+       fun c_ref: String do return "&{c_name}"
+
        # Non cached version of `c_name`
        protected fun build_c_name: String is abstract
 
@@ -2085,9 +2128,244 @@ abstract class AbstractRuntimeFunction
        # May inline the body or generate a C function call
        fun call(v: VISITOR, arguments: Array[RuntimeVariable]): nullable RuntimeVariable is abstract
 
-       # Generate the code for the `AbstractRuntimeFunction`
-       # Warning: compile more than once compilation makes CC unhappy
-       fun compile_to_c(compiler: COMPILER) is abstract
+       # Returns `true` if the associated `mmethoddef`'s return type isn't null,
+       # otherwise `false`.
+       fun has_return: Bool
+       do
+               return mmethoddef.msignature.return_mtype != null
+       end
+
+       # The current msignature to use when compiling : `signature_to_c` and `body_to_c`.
+       # This method is useful since most concrete implementation doesn't use the
+       # mmethoddef's signature. By providing a definition in the abstract class,
+       # subclasses can use any msignature.
+       fun msignature: MSignature
+       do
+               return mmethoddef.msignature.as(not null)
+       end
+
+       # The current receiver type to compile : `signature_to_c` and `body_to_c`.
+       # See `msignature` method for more information.
+       protected fun recv_mtype: MType
+       do
+               return mmethoddef.mclassdef.bound_mtype
+       end
+
+       # Prepare the `self` runtime variable to be used by the rest of
+       # compilation steps.
+       # Step 1
+       protected fun resolve_receiver(v: VISITOR): RuntimeVariable
+       do
+               var casttype = mmethoddef.mclassdef.bound_mtype
+               return new RuntimeVariable("self", recv_mtype, casttype)
+       end
+
+       # Builds the static frame for current runtime method
+       # Step 2
+       protected fun build_frame(v: VISITOR, arguments: Array[RuntimeVariable]): StaticFrame
+       do
+               return new StaticFrame(v, mmethoddef, recv_mtype.as(MClassType), arguments)
+       end
+
+       # Step 3 : Returns the return type used by the runtime function.
+       protected fun resolve_return_mtype(v: VISITOR)
+       do
+               return_mtype = msignature.return_mtype
+       end
+
+       # Fills the argument array inside v.frame.arguments, calling `resolve_ith_parameter`
+       # for each parameter.
+       private fun fill_parameters(v: VISITOR)
+       do
+               assert v.frame != null
+               for i in [0..msignature.arity[ do
+                       var arg = resolve_ith_parameter(v, i)
+                       v.frame.arguments.add(arg)
+               end
+       end
+
+       # Step 4 : Creates `RuntimeVariable` for each method argument.
+       protected fun resolve_ith_parameter(v: VISITOR, i: Int): RuntimeVariable
+       do
+               var mp = msignature.mparameters[i]
+               var mtype = mp.mtype
+               if mp.is_vararg then
+                       mtype = v.mmodule.array_type(mtype)
+               end
+               return new RuntimeVariable("p{i}", mtype, mtype)
+       end
+
+       # Generate the code for the signature with an open curly brace
+       #
+       # Returns the generated signature without a semicolon and curly brace,
+       # e.g `RES f(T0 p0, T1 p1, ..., TN pN)`
+       # Step 5
+       protected fun signature_to_c(v: VISITOR): String
+       do
+               assert v.frame != null
+               var arguments = v.frame.arguments
+               var comment = new FlatBuffer
+               var selfvar = v.frame.selfvar
+               var c_ret = "void"
+               if has_return then
+                       c_ret = "{return_mtype.ctype}"
+               end
+               var sig = new FlatBuffer
+               sig.append("{c_ret} {c_name}({recv_mtype.ctype} self")
+               comment.append("({selfvar}: {selfvar.mtype}")
+
+               for i in [0..arguments.length-1[ do
+                       # Skip the receiver
+                       var arg = arguments[i+1]
+                       comment.append(", {arg.mtype}")
+                       sig.append(", {arg.mtype.ctype} p{i}")
+               end
+               sig.append(")")
+               comment.append(")")
+               if has_return then
+                       comment.append(": {return_mtype.as(not null)}")
+               end
+               v.add_decl("/* method {self} for {comment} */")
+               v.add_decl("{sig} \{")
+               return sig.to_s
+       end
+
+       # How the concrete compiler will declare the method, e.g inside a global header file,
+       # extern signature, etc.
+       # Step 6
+       protected fun declare_signature(v: VISITOR, signature: String) is abstract
+
+       # Generate the code for the body without return statement at the end and
+       # no curly brace.
+       # Step 7
+       protected fun body_to_c(v: VISITOR)
+       do
+               mmethoddef.compile_inside_to_c(v, v.frame.arguments)
+       end
+
+       # Hook called at the end of `compile_to_c` function. This function
+       # is useful if you need to register any function compiled to c.
+       # Step 8 (optional).
+       protected fun end_compile_to_c(v: VISITOR)
+       do
+               # Nothing to do by default
+       end
+
+       # Generate the code
+       fun compile_to_c(compiler: COMPILER)
+       do
+               var v = compiler.new_visitor
+               var selfvar = resolve_receiver(v)
+               var arguments = [selfvar]
+               var frame = build_frame(v, arguments)
+               v.frame = frame
+
+               resolve_return_mtype(v)
+               fill_parameters(v)
+
+               # WARNING: the signature must be declared before creating
+               # any returnlabel and returnvar (`StaticFrame`). Otherwise,
+               # you could end up with variable outside the function.
+               var sig = signature_to_c(v)
+               declare_signature(v, sig)
+
+               frame.returnlabel = v.get_name("RET_LABEL")
+               if has_return then
+                       var ret_mtype = return_mtype
+                       assert ret_mtype != null
+                       frame.returnvar = v.new_var(ret_mtype)
+               end
+
+               body_to_c(v)
+               v.add("{frame.returnlabel.as(not null)}:;")
+               if has_return then
+                       v.add("return {frame.returnvar.as(not null)};")
+               end
+               v.add "\}"
+               end_compile_to_c(v)
+       end
+end
+
+# Base class for all thunk-like function. A thunk is a function whose purpose
+# is to call another function. Like a class wrapper or decorator, a thunk is used
+# to computer things (conversions, log, etc) before or after a function call. It's
+# an intermediary between the caller and the callee.
+#
+# The most basic use of a thunk is to unbox its argument before invoking the real callee.
+# Virtual functions are a use case of thunk function:
+#
+# ~~~~nitish
+# redef class Object
+#       fun toto(x: Int): Int do return 1 + x
+# end
+# redef class Int
+#       redef fun toto(x) do return x + self
+# end
+#
+# ```generated C code
+# long Object__toto(val* self, long x) { return 1 + x }
+# long Int__toto(long self, long x) { return x + self }
+# long THUNK_Int__toto(val* self, long x) {
+#       long self2 = (long)(self)>>2    // Unboxing from Object to Int
+#       return Int_toto(self2, x)
+# }
+#
+# ```
+# ~~~~
+#
+# A thunk has its OWN SIGNATURE and is considered like any other `AbstractRuntimeFunction`.
+# Thus, one might need to be careful when overriding parent's method. Since most usage of
+# thunks in Nit is to unbox and box things between a caller and a callee, the default
+# implementation is doing just that. In other words, a thunk takes a signature and a method
+# and tries to cast its signature to the underlying method's signature.
+#
+# A virtual function has the same signature as its `mmethoddef` field, except for
+# its receiver is of type `Object`.
+# In the same vibe, a call reference has all of its argument boxed as `Object`.
+abstract class ThunkFunction
+       super AbstractRuntimeFunction
+
+       # Determines if the callsite should be polymorphic or static.
+       var polymorph_call_flag = false is writable
+
+       # The type expected by the callee. Used to resolve `mmethoddef`'s formal
+       # parameters and virtual type. This type must NOT need anchor.
+       fun target_recv: MType is abstract
+
+       redef fun body_to_c(v)
+       do
+               assert not target_recv.need_anchor
+               var frame = v.frame
+               assert frame != null
+               var selfvar = frame.selfvar
+               var arguments = frame.arguments
+               var arguments2 = new Array[RuntimeVariable]
+               arguments2.push(v.autobox(selfvar, target_recv))
+               var resolved_sig = msignature.resolve_for(target_recv, target_recv.as(MClassType), v.mmodule, true)
+               for i in [0..resolved_sig.arity[ do
+               var param = resolved_sig.mparameters[i]
+                       var mtype = param.mtype
+                       if param.is_vararg then
+                               mtype = v.mmodule.array_type(mtype)
+                       end
+                       var temp = v.autobox(arguments[i+1], mtype)
+                       arguments2.push(temp)
+               end
+               v.add("/* {mmethoddef}, {recv_mtype.ctype} */")
+               var subret: nullable RuntimeVariable = null
+               if polymorph_call_flag then
+                       subret = v.send(mmethoddef.mproperty, arguments2)
+               else
+                       subret = v.call(mmethoddef, arguments2[0].mcasttype.as(MClassType), arguments2)
+               end
+               if has_return then
+                       assert subret != null
+                       var subret2 = v.autobox(subret, return_mtype.as(not null))
+                       v.assign(frame.returnvar.as(not null), subret2)
+               end
+
+       end
+
 end
 
 # A runtime variable hold a runtime value in C.
@@ -2164,6 +2442,14 @@ class StaticFrame
 
        # The array comprehension currently filled, if any
        private var comprehension: nullable RuntimeVariable = null
+
+       # Returns the first argument (the receiver) of a frame.
+       # REQUIRE: arguments.length >= 1
+       fun selfvar: RuntimeVariable
+       do
+               assert arguments.length >= 1
+               return arguments.first
+       end
 end
 
 redef class MType
@@ -2423,9 +2709,16 @@ redef class AMethPropdef
                var pname = mpropdef.mproperty.name
                var cname = mpropdef.mclassdef.mclass.name
                var ret = mpropdef.msignature.return_mtype
-               if ret != null then
+               var compiler = v.compiler
+
+               # WARNING: we must not resolve the return type when it's a functional type.
+               # Otherwise, we get a compile error exactly here. Moreover, `routine_ref_call`
+               # already handles the return type. NOTE: this warning only apply when compiling
+               # in `semi-global`.
+               if ret != null and not compiler.all_routine_types_name.has(cname) then
                        ret = v.resolve_for(ret, arguments.first)
                end
+
                if pname != "==" and pname != "!=" then
                        v.adapt_signature(mpropdef, arguments)
                        v.unbox_signature_extern(mpropdef, arguments)
@@ -3189,6 +3482,9 @@ redef class AMethPropdef
                                v.ret(v.new_expr("~{arguments[0]}", ret.as(not null)))
                                return true
                        end
+               else if compiler.all_routine_types_name.has(cname) then
+                       v.routine_ref_call(mpropdef, arguments)
+                       return true
                end
                if pname == "exit" then
                        v.add("exit((int){arguments[1]});")
@@ -3820,7 +4116,7 @@ redef class AIntegerExpr
 end
 
 redef class AFloatExpr
-       redef fun expr(v) do return v.float_instance("{self.n_float.text}") # FIXME use value, not n_float
+       redef fun expr(v) do return v.float_instance(self.value.as(Float))
 end
 
 redef class ACharExpr
@@ -4085,10 +4381,33 @@ redef class ASendExpr
        redef fun expr(v)
        do
                var recv = v.expr(self.n_expr, null)
+               if is_safe then
+                       v.add "if ({recv}!=NULL) \{"
+               end
                var callsite = self.callsite.as(not null)
                if callsite.is_broken then return null
                var args = v.varargize(callsite.mpropdef, callsite.signaturemap, recv, self.raw_arguments)
-               return v.compile_callsite(callsite, args)
+               var res = v.compile_callsite(callsite, args)
+               if is_safe then
+                       if res != null then
+                               var orig_res = res
+                               res = v.new_var(self.mtype.as(not null))
+                               v.add("{res} = {orig_res};")
+                               v.add("\} else \{")
+                               v.add("{res} = NULL;")
+                       end
+                       v.add("\}")
+               end
+               return res
+       end
+end
+
+redef class ACallrefExpr
+       redef fun expr(v)
+       do
+               var recv = v.expr(self.n_expr, null)
+               var res = v.routine_ref_instance(mtype.as(MClassType), recv, callsite.as(not null))
+               return res
        end
 end
 
@@ -4256,6 +4575,13 @@ redef class AVarargExpr
        end
 end
 
+redef class ASafeExpr
+       redef fun expr(v)
+       do
+               return v.expr(self.n_expr, null)
+       end
+end
+
 redef class ANamedargExpr
        redef fun expr(v)
        do
index 718cb5d..ac5a2a1 100644 (file)
@@ -204,6 +204,23 @@ class GlobalCompiler
                        v.add_decl("{mtype.arguments.first.ctype} values[1];")
                end
 
+                if all_routine_types_name.has(mtype.mclass.name) then
+                        v.add_decl("val* recv;")
+                        var c_args = ["val* self"]
+                        var c_ret = "void"
+                        var k = mtype.arguments.length
+                        if mtype.mclass.name.has("Fun") then
+                                c_ret = mtype.arguments.last.ctype
+                                k -= 1
+                        end
+                        for i in [0..k[ do
+                                var t = mtype.arguments[i]
+                                c_args.push("{t.ctype} p{i}")
+                        end
+                        var c_sig = c_args.join(", ")
+                        v.add_decl("{c_ret} (*method)({c_sig});")
+                end
+
                if mtype.ctype_extern != "val*" then
                        # Is the Nit type is native then the struct is a box with two fields:
                        # * the `classid` to be polymorph
@@ -232,13 +249,29 @@ class GlobalCompiler
                var v = self.new_visitor
 
                var is_native_array = mtype.mclass.name == "NativeArray"
-
+                var is_routine_ref = all_routine_types_name.has(mtype.mclass.name)
                var sig
                if is_native_array then
                        sig = "int length"
                else
                        sig = "void"
                end
+                if is_routine_ref then
+                        var c_args = ["val* self"]
+                        var c_ret = "void"
+                        var k = mtype.arguments.length
+                        if mtype.mclass.name.has("Fun") then
+                                c_ret = mtype.arguments.last.ctype
+                                k -= 1
+                        end
+                        for i in [0..k[ do
+                                var t = mtype.arguments[i]
+                                c_args.push("{t.ctype} p{i}")
+                        end
+                        # The underlying method signature
+                        var method_sig = "{c_ret} (*method)({c_args.join(", ")})"
+                        sig = "val* recv, {method_sig}"
+                end
 
                self.header.add_decl("{mtype.ctype} NEW_{mtype.c_name}({sig});")
                v.add_decl("/* allocate {mtype} */")
@@ -251,6 +284,10 @@ class GlobalCompiler
                else
                        v.add("{res} = nit_alloc(sizeof(struct {mtype.c_name}));")
                end
+                if is_routine_ref then
+                       v.add("((struct {mtype.c_name}*){res})->recv = recv;")
+                        v.add("((struct {mtype.c_name}*){res})->method = method;")
+                end
                v.add("{res}->classid = {self.classid(mtype)};")
 
                self.generate_init_attr(v, res, mtype)
@@ -426,6 +463,53 @@ class GlobalCompilerVisitor
                self.add("{recv}[{i}]={val};")
        end
 
+        redef fun routine_ref_instance(routine_mclass_type, recv, callsite)
+        do
+               var mmethoddef = callsite.mpropdef
+                var method = new CustomizedRuntimeFunction(mmethoddef, recv.mcasttype.as(MClassType))
+                var my_recv = recv
+                if recv.mtype.is_c_primitive then
+                        var object_type = mmodule.object_type
+                        my_recv = autobox(recv, object_type)
+                end
+                var thunk = new CustomizedThunkFunction(mmethoddef, my_recv.mtype.as(MClassType))
+                thunk.polymorph_call_flag = not my_recv.is_exact
+                compiler.todo(method)
+                compiler.todo(thunk)
+               var ret_type = self.anchor(routine_mclass_type).as(MClassType)
+                var res = self.new_expr("NEW_{ret_type.c_name}({my_recv}, &{thunk.c_name})", ret_type)
+                return res
+        end
+
+        redef fun routine_ref_call(mmethoddef, arguments)
+        do
+                var routine = arguments.first
+                var routine_type = routine.mtype.as(MClassType)
+                var routine_class = routine_type.mclass
+                var underlying_recv = "((struct {routine.mcasttype.c_name}*){routine})->recv"
+                var underlying_method = "((struct {routine.mcasttype.c_name}*){routine})->method"
+                adapt_signature(mmethoddef, arguments)
+                arguments.shift
+                var ss = "{underlying_recv}"
+                if arguments.length > 0 then
+                        ss = "{ss}, {arguments.join(", ")}"
+                end
+                arguments.unshift routine
+
+                var ret_mtype = mmethoddef.msignature.return_mtype
+
+                if ret_mtype != null then
+                        ret_mtype = resolve_for(ret_mtype, routine)
+                end
+                var callsite = "{underlying_method}({ss})"
+                if ret_mtype != null then
+                        var subres = new_expr("{callsite}", ret_mtype)
+                        ret(subres)
+                else
+                        add("{callsite};")
+               end
+        end
+
        redef fun send(m, args)
        do
                var types = self.collect_types(args.first)
@@ -926,7 +1010,7 @@ class GlobalCompilerVisitor
        end
 end
 
-# A runtime function customized on a specific monomrph receiver type
+# A runtime function customized on a specific monomorph receiver type
 private class CustomizedRuntimeFunction
        super AbstractRuntimeFunction
 
@@ -971,74 +1055,51 @@ private class CustomizedRuntimeFunction
                end
        end
 
-       # compile the code customized for the reciever
-       redef fun compile_to_c(compiler)
-       do
-               var recv = self.recv
-               var mmethoddef = self.mmethoddef
-               if not recv.is_subtype(compiler.mainmodule, null, mmethoddef.mclassdef.bound_mtype) then
-                       print("problem: why do we compile {self} for {recv}?")
-                       abort
-               end
+        redef fun recv_mtype
+        do
+                return recv
+        end
 
-               var v = compiler.new_visitor
-               var selfvar = new RuntimeVariable("self", recv, recv)
-               if compiler.runtime_type_analysis.live_types.has(recv) then
-                       selfvar.is_exact = true
-               end
-               var arguments = new Array[RuntimeVariable]
-               var frame = new StaticFrame(v, mmethoddef, recv, arguments)
-               v.frame = frame
+        redef var return_mtype
 
-               var sig = new FlatBuffer
-               var comment = new FlatBuffer
-               var ret = mmethoddef.msignature.return_mtype
-               if ret != null then
-                       ret = v.resolve_for(ret, selfvar)
-                       sig.append("{ret.ctype} ")
-               else
-                       sig.append("void ")
-               end
-               sig.append(self.c_name)
-               sig.append("({recv.ctype} {selfvar}")
-               comment.append("(self: {recv}")
-               arguments.add(selfvar)
-               for i in [0..mmethoddef.msignature.arity[ do
-                       var mp = mmethoddef.msignature.mparameters[i]
-                       var mtype = mp.mtype
-                       if mp.is_vararg then
-                               mtype = v.mmodule.array_type(mtype)
-                       end
-                       mtype = v.resolve_for(mtype, selfvar)
-                       comment.append(", {mtype}")
-                       sig.append(", {mtype.ctype} p{i}")
-                       var argvar = new RuntimeVariable("p{i}", mtype, mtype)
-                       arguments.add(argvar)
-               end
-               sig.append(")")
-               comment.append(")")
-               if ret != null then
-                       comment.append(": {ret}")
-               end
-               compiler.header.add_decl("{sig};")
-
-               v.add_decl("/* method {self} for {comment} */")
-               v.add_decl("{sig} \{")
-               #v.add("printf(\"method {self} for {comment}\\n\");")
-               if ret != null then
-                       frame.returnvar = v.new_var(ret)
-               end
-               frame.returnlabel = v.get_name("RET_LABEL")
-
-               mmethoddef.compile_inside_to_c(v, arguments)
-
-               v.add("{frame.returnlabel.as(not null)}:;")
-               if ret != null then
-                       v.add("return {frame.returnvar.as(not null)};")
+        redef fun resolve_receiver(v)
+        do
+                var selfvar = new RuntimeVariable("self", recv, recv)
+               if v.compiler.runtime_type_analysis.live_types.has(recv) then
+                       selfvar.is_exact = true
                end
-               v.add("\}")
-               if not self.c_name.has_substring("VIRTUAL", 0) then compiler.names[self.c_name] = "{mmethoddef.mclassdef.mmodule.name}::{mmethoddef.mclassdef.mclass.name}::{mmethoddef.mproperty.name} ({mmethoddef.location.file.filename}:{mmethoddef.location.line_start})"
-       end
+                return selfvar
+        end
+
+        redef fun resolve_return_mtype(v)
+        do
+                var selfvar = v.frame.selfvar
+                if has_return then
+                        var ret = msignature.return_mtype.as(not null)
+                        return_mtype = v.resolve_for(ret, selfvar)
+                end
+        end
+        redef fun resolve_ith_parameter(v, i)
+        do
+                var selfvar = v.frame.selfvar
+                var mp = msignature.mparameters[i]
+                var mtype = mp.mtype
+                if mp.is_vararg then
+                        mtype = v.mmodule.array_type(mtype)
+                end
+                mtype = v.resolve_for(mtype, selfvar)
+                return new RuntimeVariable("p{i}", mtype, mtype)
+        end
+
+        redef fun declare_signature(v, sig)
+        do
+                v.compiler.header.add_decl("{sig};")
+        end
+
+        redef fun end_compile_to_c(v)
+        do
+               if not self.c_name.has_substring("VIRTUAL", 0) then v.compiler.names[self.c_name] = "{mmethoddef.mclassdef.mmodule.name}::{mmethoddef.mclassdef.mclass.name}::{mmethoddef.mproperty.name} ({mmethoddef.location.file.filename}:{mmethoddef.location.line_start})"
+        end
 
        redef fun call(v: VISITOR, arguments: Array[RuntimeVariable]): nullable RuntimeVariable
        do
@@ -1046,7 +1107,32 @@ private class CustomizedRuntimeFunction
                if ret != null then
                        ret = v.resolve_for(ret, arguments.first)
                end
-               if self.mmethoddef.can_inline(v) then
+
+                # TODO: remove this guard when gcc warning issue (#2781) is resolved
+                # WARNING: the next two lines of code is used to prevent inlining.
+                # Inlining of a callref seems to work all the time. However,
+                # it will produce some deadcode in certain scenarios (when using nullable type).
+                #
+                # ~~~~nitish
+                # class A[E]
+                #       fun toto(x: E)
+                #       do
+                #               # ...do something with x...
+                #       end
+                # end
+                # end
+                # var a = new A[nullable Int]
+                # var f = &a.toto
+                # f.call(null)  # Will produce a proper C callsite, but it will
+                #               # produce unreachable (dead code) for type checking
+                #               # and covariance. Thus, creating warnings when
+                #               # compiling in global. However, if you ignore
+                #               # those warnings, the binary works perfectly fine.
+                # ~~~~
+                var intromclassdef = self.mmethoddef.mproperty.intro_mclassdef
+                var is_callref = v.compiler.all_routine_types_name.has(intromclassdef.name)
+
+                if self.mmethoddef.can_inline(v) and not is_callref then
                        var frame = new StaticFrame(v, self.mmethoddef, self.recv, arguments)
                        frame.returnlabel = v.get_name("RET_LABEL")
                        if ret != null then
@@ -1073,3 +1159,67 @@ private class CustomizedRuntimeFunction
                end
        end
 end
+
+# Thunk implementation for global compiler.
+# For more detail see `abstract_compiler::ThunkFunction` documentation.
+class CustomizedThunkFunction
+        super ThunkFunction
+        super CustomizedRuntimeFunction
+
+        redef fun c_name
+        do
+                return "THUNK_" + super
+        end
+
+        redef fun hash
+        do
+                return super + c_name.hash
+        end
+
+        redef fun resolve_receiver(v)
+        do
+                var res = super(v)
+                if res.is_exact then res.is_exact = not polymorph_call_flag
+                return res
+        end
+
+        redef fun target_recv
+        do
+                # If the targeted method was introduced by a primitive type,
+                # then target_recv must be set to it. Otherwise, there will
+                # be a missing cast. Here's an example:
+                #
+                # ~~~~nitish
+                # class Int
+                #       fun mult_by(x:Int):Int do return x * self
+                # end
+                #
+                # var f = &10.mult_by
+                # ~~~~
+                # Here the thunk `f` must box the receiver `10` into an object.
+                # This is due to the memory representation of a call ref which
+                # has a pointer to an opaque type `val*`:
+                #
+                # ```C
+                # struct Mult_by_callref_struct {
+                #       classid;
+                #       // The receiver `10` would be here
+                #       val* recv;
+                #       // the targeted receiver is a `long`
+                #       long (*pointer_to_mult_by)(long, long);
+                # }
+                # ```
+                #
+                # Thus, every primitive type must be boxed into an `Object` when
+                # instantiating a callref.
+                #
+                # However, if the underlying method was introduced by a primitive
+                # type then a cast must be invoked to convert our boxed receiver
+                # to its original primitive type.
+                var intro_recv = mmethoddef.mproperty.intro_mclassdef.bound_mtype
+                if intro_recv.is_c_primitive then
+                        return intro_recv
+                end
+                return recv_mtype
+        end
+end
index 15b6f05..4716dae 100644 (file)
@@ -149,6 +149,7 @@ class SeparateCompiler
        private var type_ids: Map[MType, Int] is noinit
        private var type_colors: Map[MType, Int] is noinit
        private var opentype_colors: Map[MType, Int] is noinit
+       private var thunks_to_compile: Set[SeparateRuntimeFunction] = new HashSet[SeparateRuntimeFunction]
 
        init do
                var file = new_file("nit.common")
@@ -195,6 +196,15 @@ class SeparateCompiler
                compiler.compile_types
        end
 
+       fun thunk_todo(thunk: SeparateRuntimeFunction)
+       do
+               # Concrete instance of `SeparateRuntimeFunction` are already
+               # handled by the compiler. Avoid duplicate compilation.
+               if thunk isa SeparateThunkFunction then
+                       thunks_to_compile.add(thunk)
+               end
+       end
+
        # Color and compile type structures and cast information
        fun compile_types
        do
@@ -253,7 +263,7 @@ class SeparateCompiler
                # Collect all bas box class
                # FIXME: this is not completely fine with a separate compilation scheme
                for classname in ["Int", "Bool", "Byte", "Char", "Float", "CString",
-                                "Pointer", "Int8", "Int16", "UInt16", "Int32", "UInt32"] do
+                                "Pointer", "Int8", "Int16", "UInt16", "Int32", "UInt32"] do
                        var classes = self.mainmodule.model.get_mclasses_by_name(classname)
                        if classes == null then continue
                        assert classes.length == 1 else print_error classes.join(", ")
@@ -274,7 +284,6 @@ class SeparateCompiler
                else
                        return self.box_kinds[mclass]
                end
-
        end
 
        fun compile_color_consts(colors: Map[Object, Int]) do
@@ -414,7 +423,6 @@ class SeparateCompiler
                        attr_tables[mclass] = attr_colorer.build_layout(mclass)
                end
 
-
        end
 
        # colorize live types of the program
@@ -506,7 +514,6 @@ class SeparateCompiler
                return tables
        end
 
-
        private fun compute_type_test_layouts(mtypes: Set[MClassType], cast_types: Set[MType]) do
                # Group cast_type by their classes
                var bucklets = new HashMap[MClass, Set[MType]]
@@ -641,6 +648,15 @@ class SeparateCompiler
                                end
                        end
                end
+               var compiled_thunks = new Array[SeparateRuntimeFunction]
+               # Compile thunks here to write them in the same module they are declared.
+               for thunk in thunks_to_compile do
+                       if thunk.mmethoddef.mclassdef.mmodule == mmodule then
+                               thunk.compile_to_c(self)
+                               compiled_thunks.add(thunk)
+                       end
+               end
+               thunks_to_compile.remove_all(compiled_thunks)
                self.mainmodule = old_module
        end
 
@@ -938,6 +954,29 @@ class SeparateCompiler
                        v.add("return (val*){res};")
                        v.add("\}")
                        return
+               else if mclass.name == "RoutineRef" then
+                       self.header.add_decl("struct instance_{c_name} \{")
+                       self.header.add_decl("const struct type *type;")
+                       self.header.add_decl("const struct class *class;")
+                       self.header.add_decl("val* recv;")
+                       self.header.add_decl("nitmethod_t method;")
+                       self.header.add_decl("\};")
+
+                       self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(val* recv, nitmethod_t method, const struct class* class, const struct type* type);")
+                       v.add_decl("/* allocate {mtype} */")
+                       v.add_decl("{mtype.ctype} NEW_{c_name}(val* recv, nitmethod_t method, const struct class* class, const struct type* type)\{")
+                       var res = v.get_name("self")
+                       v.add_decl("struct instance_{c_name} *{res};")
+                       var alloc = v.nit_alloc("sizeof(struct instance_{c_name})", mclass.full_name)
+                       v.add("{res} = {alloc};")
+                       v.add("{res}->type = type;")
+                       hardening_live_type(v, "type")
+                       v.add("{res}->class = class;")
+                       v.add("{res}->recv = recv;")
+                       v.add("{res}->method = method;")
+                       v.add("return (val*){res};")
+                       v.add("\}")
+                       return
                else if mtype.mclass.kind == extern_kind and mtype.mclass.name != "CString" then
                        # Is an extern class (other than Pointer and CString)
                        # Pointer is caught in a previous `if`, and CString is internal
@@ -2149,6 +2188,127 @@ class SeparateCompilerVisitor
                self.add("{recv}[{i}]={val};")
        end
 
+       redef fun routine_ref_instance(routine_type, recv, callsite)
+       do
+               #debug "ENTER ref_instance"
+               var mmethoddef = callsite.mpropdef
+               var mmethod = mmethoddef.mproperty
+               # routine_mclass is the specialized one, e.g: FunRef1, ProcRef2, etc..
+               var routine_mclass = routine_type.mclass
+
+               var nclasses = mmodule.model.get_mclasses_by_name("RoutineRef").as(not null)
+               var base_routine_mclass = nclasses.first
+
+               # All routine classes use the same `NEW` constructor.
+               # However, they have different declared `class` and `type` value.
+               self.require_declaration("NEW_{base_routine_mclass.c_name}")
+
+               var recv_class_cname = recv.mcasttype.as(MClassType).mclass.c_name
+               var my_recv = recv
+
+               if recv.mtype.is_c_primitive then
+                       my_recv = autobox(recv, mmodule.object_type)
+               end
+               var my_recv_mclass_type = my_recv.mtype.as(MClassType)
+
+               # The class of the concrete Routine must exist (e.g ProcRef0, FunRef0, etc.)
+               self.require_declaration("class_{routine_mclass.c_name}")
+               self.require_declaration(mmethoddef.c_name)
+
+               var thunk_function = mmethoddef.callref_thunk(my_recv_mclass_type)
+               # If the receiver is exact, then there's no need to make a
+               # polymorph call to the underlying method.
+               thunk_function.polymorph_call_flag = not my_recv.is_exact
+               var runtime_function = mmethoddef.virtual_runtime_function
+
+               var is_c_equiv = runtime_function.msignature.c_equiv(thunk_function.msignature)
+
+               var c_ref = thunk_function.c_ref
+               if is_c_equiv then
+                       var const_color = mmethoddef.mproperty.const_color
+                       c_ref = "{class_info(my_recv)}->vft[{const_color}]"
+                       self.require_declaration(const_color)
+               else
+                       self.require_declaration(thunk_function.c_name)
+                       compiler.thunk_todo(thunk_function)
+               end
+               var res: RuntimeVariable
+               if routine_type.need_anchor then
+                       hardening_live_open_type(routine_type)
+                       link_unresolved_type(self.frame.mpropdef.mclassdef, routine_type)
+                       var recv2 = self.frame.arguments.first
+                       var recv2_type_info = self.type_info(recv2)
+                       self.require_declaration(routine_type.const_color)
+                       res = self.new_expr("NEW_{base_routine_mclass.c_name}({my_recv}, (nitmethod_t){c_ref}, &class_{routine_mclass.c_name}, {recv2_type_info}->resolution_table->types[{routine_type.const_color}])", routine_type)
+               else
+                       self.require_declaration("type_{routine_type.c_name}")
+                       compiler.undead_types.add(routine_type)
+                       res = self.new_expr("NEW_{base_routine_mclass.c_name}({my_recv}, (nitmethod_t){c_ref}, &class_{routine_mclass.c_name}, &type_{routine_type.c_name})", routine_type)
+               end
+               return res
+       end
+
+       redef fun routine_ref_call(mmethoddef, arguments)
+       do
+               #debug "ENTER ref_call"
+               compiler.modelbuilder.nb_invok_by_tables += 1
+               if compiler.modelbuilder.toolcontext.opt_invocation_metrics.value then add("count_invoke_by_tables++;")
+               var nclasses = mmodule.model.get_mclasses_by_name("RoutineRef").as(not null)
+               var nclass = nclasses.first
+               var runtime_function = mmethoddef.virtual_runtime_function
+
+               # Save the current receiver since adapt_signature will autobox
+               # the routine receiver which is not the underlying receiver.
+               # The underlying receiver has already been adapted in the
+               # `routine_ref_instance` method. Here we just want to adapt the
+               # rest of the signature, but it's easier to pass the wrong
+               # receiver in adapt_signature then discards it with `shift`.
+               #
+               # ~~~~nitish
+               # class A; def toto do print "toto"; end
+               # var a = new A
+               # var f = &a.toto # `a` is the underlying receiver
+               # f.call # here `f` is the routine receiver
+               # ~~~~
+               var routine = arguments.first
+
+               # Retrieve the concrete routine type
+               var original_recv_c = "(((struct instance_{nclass.c_name}*){arguments[0]})->recv)"
+               var nitmethod = "(({runtime_function.c_funptrtype})(((struct instance_{nclass.c_name}*){arguments[0]})->method))"
+               if arguments.length > 1 then
+                       adapt_signature(mmethoddef, arguments)
+               end
+
+               var ret_mtype = runtime_function.called_signature.return_mtype
+
+               if ret_mtype != null then
+                       # `ret` is actually always nullable Object. When invoking
+                       # a callref, we don't have the original callsite information.
+                       # Thus, we need to recompute the return type of the callsite.
+                       ret_mtype = resolve_for(ret_mtype, routine)
+               end
+
+               # remove the routine's receiver
+               arguments.shift
+               var ss = arguments.join(", ")
+               # replace the receiver with the original one
+               if arguments.length > 0 then
+                       ss = "{original_recv_c}, {ss}"
+               else
+                       ss = original_recv_c
+               end
+
+               arguments.unshift routine # put back the routine ref receiver
+               add "/* {mmethoddef.mproperty} on {arguments.first.inspect}*/"
+               var callsite = "{nitmethod}({ss})"
+               if ret_mtype != null then
+                       var subres = new_expr("{callsite}", ret_mtype)
+                       ret(subres)
+               else
+                       add("{callsite};")
+               end
+       end
+
        fun link_unresolved_type(mclassdef: MClassDef, mtype: MType) do
                assert mtype.need_anchor
                var compiler = self.compiler
@@ -2172,6 +2332,43 @@ redef class MMethodDef
                end
                return res
        end
+
+       # Returns true if the current method definition differ from
+       # its original introduction in terms of receiver type.
+       fun recv_differ_from_intro: Bool
+       do
+               var intromclassdef = mproperty.intro.mclassdef
+               var introrecv = intromclassdef.bound_mtype
+               return self.mclassdef.bound_mtype != introrecv
+       end
+
+       # The C thunk function associated to a mmethoddef. Receives only nullable
+       # Object and cast them to the original mmethoddef signature.
+       fun callref_thunk(recv_mtype: MClassType): SeparateThunkFunction
+       do
+               var res = callref_thunk_cache
+               if res == null then
+                       var object_type = mclassdef.mmodule.object_type
+                       var nullable_object = object_type.as_nullable
+                       var ps = new Array[MParameter]
+
+                       # Replace every argument type by nullable object
+                       for p in msignature.mparameters do
+                               ps.push(new MParameter(p.name, nullable_object, p.is_vararg))
+                       end
+                       var ret: nullable MType = null
+                       if msignature.return_mtype != null then ret = nullable_object
+                       var msignature2 = new MSignature(ps, ret)
+                       var intromclassdef = mproperty.intro.mclassdef
+
+                       res = new SeparateThunkFunction(self, recv_mtype, msignature2, "THUNK_{c_name}", mclassdef.bound_mtype)
+                       res.polymorph_call_flag = true
+                       callref_thunk_cache = res
+               end
+               return res
+       end
+
+       private var callref_thunk_cache: nullable SeparateThunkFunction
        private var separate_runtime_function_cache: nullable SeparateRuntimeFunction
 
        # The C function associated to a mmethoddef, that can be stored into a VFT of a class
@@ -2197,10 +2394,7 @@ redef class MMethodDef
                                self.virtual_runtime_function_cache = res
                                return res
                        end
-
-                       res = new SeparateRuntimeFunction(self, recv, msignature, "VIRTUAL_{c_name}")
-                       self.virtual_runtime_function_cache = res
-                       res.is_thunk = true
+                       res = new SeparateThunkFunction(self, recv, msignature, "VIRTUAL_{c_name}", mclassdef.bound_mtype)
                end
                return res
        end
@@ -2237,11 +2431,23 @@ class SeparateRuntimeFunction
        # The name on the compiled method
        redef var build_c_name: String
 
-       # Statically call the original body instead
-       var is_thunk = false
-
        redef fun to_s do return self.mmethoddef.to_s
 
+       redef fun msignature
+       do
+               return called_signature
+       end
+
+       redef fun recv_mtype
+       do
+               return called_recv
+       end
+
+       redef fun return_mtype
+       do
+               return called_signature.return_mtype
+       end
+
        # The C return type (something or `void`)
        var c_ret: String is lazy do
                var ret = called_signature.return_mtype
@@ -2271,70 +2477,33 @@ class SeparateRuntimeFunction
        # The C type for the function pointer.
        var c_funptrtype: String is lazy do return "{c_ret}(*){c_sig}"
 
-       redef fun compile_to_c(compiler)
+       redef fun declare_signature(v, sig)
        do
-               var mmethoddef = self.mmethoddef
-
-               var sig = "{c_ret} {c_name}{c_sig}"
-               compiler.provide_declaration(self.c_name, "{sig};")
-
-               var rta = compiler.as(SeparateCompiler).runtime_type_analysis
-
-               var recv = self.mmethoddef.mclassdef.bound_mtype
-               var v = compiler.new_visitor
-               var selfvar = new RuntimeVariable("self", called_recv, recv)
-               var arguments = new Array[RuntimeVariable]
-               var frame = new StaticFrame(v, mmethoddef, recv, arguments)
-               v.frame = frame
-
-               var msignature = called_signature
-               var ret = called_signature.return_mtype
-
-               var comment = new FlatBuffer
-               comment.append("({selfvar}: {selfvar.mtype}")
-               arguments.add(selfvar)
-               for i in [0..msignature.arity[ do
-                       var mp = msignature.mparameters[i]
-                       var mtype = mp.mtype
-                       if mp.is_vararg then
-                               mtype = v.mmodule.array_type(mtype)
-                       end
-                       comment.append(", {mtype}")
-                       var argvar = new RuntimeVariable("p{i}", mtype, mtype)
-                       arguments.add(argvar)
-               end
-               comment.append(")")
-               if ret != null then
-                       comment.append(": {ret}")
-               end
-
-               v.add_decl("/* method {self} for {comment} */")
-               v.add_decl("{sig} \{")
-               if ret != null then
-                       frame.returnvar = v.new_var(ret)
-               end
-               frame.returnlabel = v.get_name("RET_LABEL")
+               v.compiler.provide_declaration(c_name, "{sig};")
+       end
 
-               if is_thunk then
-                       var subret = v.call(mmethoddef, recv, arguments)
-                       if ret != null then
-                               assert subret != null
-                               v.assign(frame.returnvar.as(not null), subret)
-                       end
-               else if rta != null and not rta.live_mmodules.has(mmethoddef.mclassdef.mmodule) then
+       redef fun body_to_c(v)
+       do
+               var rta = v.compiler.as(SeparateCompiler).runtime_type_analysis
+               if rta != null and not rta.live_mmodules.has(mmethoddef.mclassdef.mmodule) then
                        v.add_abort("FATAL: Dead method executed.")
                else
-                       mmethoddef.compile_inside_to_c(v, arguments)
+                       super
                end
+       end
 
-               v.add("{frame.returnlabel.as(not null)}:;")
-               if ret != null then
-                       v.add("return {frame.returnvar.as(not null)};")
-               end
-               v.add("\}")
+       redef fun end_compile_to_c(v)
+       do
+               var compiler = v.compiler
                compiler.names[self.c_name] = "{mmethoddef.full_name} ({mmethoddef.location.file.filename}:{mmethoddef.location.line_start})"
        end
 
+       redef fun build_frame(v, arguments)
+       do
+               var recv = mmethoddef.mclassdef.bound_mtype
+               return new StaticFrame(v, mmethoddef, recv, arguments)
+       end
+
        # Compile the trampolines used to implement late-binding.
        #
        # See `opt_trampoline_call`.
@@ -2382,6 +2551,12 @@ class SeparateRuntimeFunction
        end
 end
 
+class SeparateThunkFunction
+       super ThunkFunction
+       super SeparateRuntimeFunction
+       redef var target_recv
+end
+
 redef class MType
        # Are values of `self` tagged?
        # If false, it means that the type is not primitive, or is boxed.
index 511cb75..8e0a0b2 100644 (file)
@@ -322,6 +322,26 @@ class SeparateErasureCompiler
                        v.add("return (val*){res};")
                        v.add("\}")
                        return
+                else if mclass.name == "RoutineRef" then
+                        self.header.add_decl("struct instance_{c_name} \{")
+                        self.header.add_decl("const struct class *class;")
+                        self.header.add_decl("val* recv;")
+                        self.header.add_decl("nitmethod_t method;")
+                        self.header.add_decl("\};")
+
+                        self.provide_declaration("NEW_{c_name}", "{mtype.ctype} NEW_{c_name}(val* recv, nitmethod_t method, const struct class* class);")
+                        v.add_decl("/* allocate {mtype} */")
+                        v.add_decl("{mtype.ctype} NEW_{c_name}(val* recv, nitmethod_t method, const struct class* class)\{")
+                        var res = v.get_name("self")
+                        v.add_decl("struct instance_{c_name} *{res};")
+                        var alloc = v.nit_alloc("sizeof(struct instance_{c_name})", mclass.full_name)
+                        v.add("{res} = {alloc};")
+                        v.add("{res}->class = class;")
+                        v.add("{res}->recv = recv;")
+                        v.add("{res}->method = method;")
+                        v.add("return (val*){res};")
+                        v.add("\}")
+                        return
                else if mtype.mclass.kind == extern_kind and mtype.mclass.name != "CString" then
                        var pointer_type = mainmodule.pointer_type
 
@@ -658,4 +678,55 @@ class SeparateErasureCompilerVisitor
                self.add("{res} = NEW_{nclass.c_name}({length});")
                return res
        end
+
+        redef fun routine_ref_instance(routine_type, recv, callsite)
+        do
+               var mmethoddef = callsite.mpropdef
+                #debug "ENTER ref_instance"
+                var mmethod = mmethoddef.mproperty
+                # routine_mclass is the specialized one, e.g: FunRef1, ProcRef2, etc..
+                var routine_mclass = routine_type.mclass
+
+                var nclasses = mmodule.model.get_mclasses_by_name("RoutineRef").as(not null)
+                var base_routine_mclass = nclasses.first
+
+                # All routine classes use the same `NEW` constructor.
+                # However, they have different declared `class` and `type` value.
+                self.require_declaration("NEW_{base_routine_mclass.c_name}")
+
+                var recv_class_cname = recv.mcasttype.as(MClassType).mclass.c_name
+                var my_recv = recv
+
+                if recv.mtype.is_c_primitive then
+                        my_recv = autobox(recv, mmodule.object_type)
+                end
+                var my_recv_mclass_type = my_recv.mtype.as(MClassType)
+
+                # The class of the concrete Routine must exist (e.g ProcRef0, FunRef0, etc.)
+                self.require_declaration("class_{routine_mclass.c_name}")
+
+                self.require_declaration(mmethoddef.c_name)
+
+                var thunk_function = mmethoddef.callref_thunk(my_recv_mclass_type)
+                var runtime_function = mmethoddef.virtual_runtime_function
+
+                var is_c_equiv = runtime_function.msignature.c_equiv(thunk_function.msignature)
+
+                var c_ref = thunk_function.c_ref
+                if is_c_equiv then
+                        var const_color = mmethoddef.mproperty.const_color
+                        c_ref = "{class_info(my_recv)}->vft[{const_color}]"
+                        self.require_declaration(const_color)
+                else
+                        self.require_declaration(thunk_function.c_name)
+                        compiler.thunk_todo(thunk_function)
+                end
+                compiler.thunk_todo(thunk_function)
+
+                # Each RoutineRef points to a receiver AND a callref_thunk
+                var res = self.new_expr("NEW_{base_routine_mclass.c_name}({my_recv}, (nitmethod_t){c_ref}, &class_{routine_mclass.c_name})", routine_type)
+                #debug "LEAVING ref_instance"
+                return res
+
+        end
 end
diff --git a/src/contracts.nit b/src/contracts.nit
new file mode 100644 (file)
index 0000000..e2bad53
--- /dev/null
@@ -0,0 +1,844 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Module to build contract
+# This module provide extension of the modele to add contracts, the building phase and the "re-driving" to call the contract.
+#
+# FIXME Split the module in three parts: extension of the modele, building phase and the "re-driving"
+module contracts
+
+import astbuilder
+import parse_annotations
+import phase
+import semantize
+intrude import modelize_property
+intrude import scope
+intrude import typing
+
+redef class ToolContext
+       # Parses contracts annotations.
+       var contracts_phase: Phase = new ContractsPhase(self, [modelize_property_phase,typing_phase])
+end
+
+private class ContractsPhase
+       super Phase
+
+       # The entry point of the contract phase
+       # In reality, the contract phase is executed on each module
+       # FIXME: Actually all method is checked to add method if any contract is inherited
+       redef fun process_nmodule(nmodule)do
+               # Check if the contracts are disabled
+               if toolcontext.opt_no_contract.value then return
+               nmodule.do_contracts(self.toolcontext)
+       end
+end
+
+redef class AModule
+       # Compile all contracts
+       #
+       # The implementation of the contracts is done in two visits.
+       #
+       # - First step, the visitor analyzes and constructs the contracts
+       #   for each class (invariant) and method (expect, ensure).
+       #
+       # - Second step the visitor analyzes each `ASendExpr` to see
+       #   if the callsite calls a method with a contract. If this is
+       #       the case the callsite is replaced by another callsite to the contract method.
+       fun do_contracts(toolcontext: ToolContext) do
+               #
+               var contract_visitor = new ContractsVisitor(toolcontext, toolcontext.modelbuilder.identified_modules.first, self, new ASTBuilder(mmodule.as(not null)))
+               contract_visitor.enter_visit(self)
+               #
+               var callsite_visitor = new CallSiteVisitor(toolcontext)
+               callsite_visitor.enter_visit(self)
+       end
+end
+
+# This visitor checks the `AMethPropdef` and the `AClassDef` to check if they have a contract annotation or it's a redefinition with a inheritance contract
+private class ContractsVisitor
+       super Visitor
+
+       var toolcontext: ToolContext
+
+       # The main module
+       # It's strore to define if the contract need to be build depending on the selected policy `--no-contract` `--full-contract` or default
+       var mainmodule: MModule
+
+       # Actual visited module
+       var visited_module: AModule
+
+       var ast_builder: ASTBuilder
+
+       # The `ASignature` of the actual build contract
+       var n_signature: ASignature is noinit
+
+       # The `MSignature` of the actual build contract
+       var m_signature: MSignature is noinit
+
+       # The `current_location` can corresponding of the annotation or method location.
+       var current_location: Location is noinit
+
+       # Is the contrat is an introduction or not?
+       var is_intro_contract: Bool is noinit
+
+       # Actual visited class
+       var visited_class: nullable AClassdef
+
+       # is `no_contract` annotation was found
+       var find_no_contract = false
+
+       redef fun visit(node)
+       do
+               node.create_contracts(self)
+               node.visit_all(self)
+       end
+
+       # Method use to define the signature part of the method `ASignature` and `MSignature`
+       # The given `mcontract` provided `adapt_nsignature` and `adapt_msignature` to copy and adapt the given signature (`nsignature` and `msignature`)
+       fun define_signature(mcontract: MContract, nsignature: nullable ASignature, msignature: nullable MSignature)
+       do
+               if nsignature != null and msignature != null then nsignature.ret_type = msignature.return_mtype
+               self.n_signature = mcontract.adapt_nsignature(nsignature)
+               self.m_signature = mcontract.adapt_msignature(msignature)
+       end
+
+       # Define the new contract take in consideration that an old contract exist or not
+       private fun build_contract(n_annotation: AAnnotation, mcontract: MContract, mclassdef: MClassDef): MMethodDef
+       do
+               self.current_location = n_annotation.location
+               # Retrieving the expression provided in the annotation
+               var n_condition = n_annotation.construct_condition(self)
+               var m_contractdef: AMethPropdef
+               if is_intro_contract then
+                       # Create new contract method
+                       m_contractdef = mcontract.create_intro_contract(self, n_condition, mclassdef)
+               else
+                       # Create a redef of contract to take in consideration the new condition
+                       m_contractdef = mcontract.create_subcontract(self, n_condition, mclassdef)
+               end
+               var contract_propdef = m_contractdef.mpropdef
+               # The contract has a null mpropdef, this should never happen
+               assert contract_propdef != null
+               return contract_propdef
+       end
+
+       # Verification if the construction of the contract is necessary.
+       # Three cases are checked for `expect`:
+       #
+       # - Is the `--full-contract` option it's use?
+       # - Is the method is in the main package
+       # - Is the method is in a direct imported package.
+       #
+       fun check_usage_expect(actual_mmodule: MModule): Bool
+       do
+               var main_package = mainmodule.mpackage
+               var actual_package = actual_mmodule.mpackage
+               if main_package != null and actual_package != null then
+                       var condition_direct_arc = toolcontext.modelbuilder.model.mpackage_importation_graph.has_arc(main_package, actual_package)
+                       return toolcontext.opt_full_contract.value or condition_direct_arc or main_package == actual_package
+               end
+               return false
+       end
+
+       # Verification if the construction of the contract is necessary.
+       # Two cases are checked for `ensure`:
+       #
+       # - Is the `--full-contract` option it's use?
+       # - Is the method is in the main package
+       #
+       fun check_usage_ensure(actual_mmodule: MModule): Bool
+       do
+               return toolcontext.opt_full_contract.value or mainmodule.mpackage == actual_mmodule.mpackage
+       end
+
+end
+
+# This visitor checks the `callsite` to see if the target `mpropdef` has a contract.
+private class CallSiteVisitor
+       super Visitor
+
+       var toolcontext: ToolContext
+
+       # Actual visited method
+       var visited_method: APropdef is noinit
+
+       redef fun visit(node)
+       do
+               node.check_callsite(self)
+               node.visit_all(self)
+       end
+
+       # Check if the callsite calls a method with a contract.
+       # If it's the case the callsite is replaced by another callsite to the contract method.
+       private fun drive_method_contract(callsite: CallSite): CallSite
+       do
+               if callsite.mproperty.mcontract_facet != null then
+                       var contract_facet = callsite.mproperty.mcontract_facet
+                       var visited_mpropdef = visited_method.mpropdef
+                       assert contract_facet != null and visited_mpropdef != null
+
+                       var type_visitor = new TypeVisitor(toolcontext.modelbuilder, visited_mpropdef)
+                       var drived_callsite = type_visitor.build_callsite_by_property(visited_method, callsite.recv, contract_facet, callsite.recv_is_self)
+                       # This never happen this check is here for debug
+                       assert drived_callsite != null
+                       return drived_callsite
+               end
+               return callsite
+       end
+end
+
+redef class ANode
+       private fun create_contracts(v: ContractsVisitor) do end
+       private fun check_callsite(v: CallSiteVisitor) do end
+end
+
+redef class AAnnotation
+
+       # Returns the conditions of annotation parameters in the form of and expr
+       # exemple:
+       # the contract ensure(true, i == 10, f >= 1.0)
+       # return this condition (true and i == 10 and f >= 1.0)
+       private fun construct_condition(v : ContractsVisitor): AExpr
+       do
+               var n_condition = n_args.first
+               n_args.remove_at(0)
+               for n_arg in n_args do n_condition = v.ast_builder.make_and(n_condition, n_arg)
+               return n_condition
+       end
+end
+
+# The root of all contracts
+#
+# The objective of this class is to provide the set
+# of services must be implemented or provided by a contract
+abstract class MContract
+       super MMethod
+
+       # Define the name of the contract
+       fun contract_name: String is abstract
+
+       # Method use to diplay warning when the contract is not present at the introduction
+       private fun no_intro_contract(v: ContractsVisitor, a: AAnnotation)do end
+
+       # Creating specific inheritance block contract
+       private fun create_nblock(v: ContractsVisitor, n_condition: AExpr, args: Array[AExpr]): ABlockExpr is abstract
+
+       # Method to adapt the `n_mpropdef.n_block` to the contract
+       private fun adapt_block_to_contract(v: ContractsVisitor, n_mpropdef: AMethPropdef) is abstract
+
+       # Adapt the msignature specifically for the contract method
+       private fun adapt_specific_msignature(m_signature: MSignature): MSignature do return m_signature.adapt_to_condition
+
+       # Adapt the nsignature specifically for the contract method
+       private fun adapt_specific_nsignature(n_signature: ASignature): ASignature do return n_signature.adapt_to_condition(null)
+
+       # Adapt the `m_signature` to the contract
+       # If it is not null call the specific adapt `m_signature` for the contract
+       private fun adapt_msignature(m_signature: nullable MSignature): MSignature
+       do
+               if m_signature == null then return new MSignature(new Array[MParameter])
+               return adapt_specific_msignature(m_signature)
+       end
+
+       # Adapt the `n_signature` to the contract
+       # If it is not null call the specific adapt `n_signature` for the contract
+       private fun adapt_nsignature(n_signature: nullable ASignature): ASignature
+       do
+               if n_signature == null then return new ASignature
+               return adapt_specific_nsignature(n_signature)
+       end
+
+       # Create a new empty contract
+       private fun create_empty_contract(v: ContractsVisitor, mclassdef: MClassDef, msignature: nullable MSignature, n_signature: ASignature)
+       do
+               var n_contract_def = intro_mclassdef.mclass.create_empty_method(v, self, mclassdef, msignature, n_signature)
+               n_contract_def.do_all(v.toolcontext)
+       end
+
+       # Create the initial contract (intro)
+       # All contracts have the same implementation for the introduction.
+       #
+       # fun contrat([...])
+       # do
+       #       assert contract_condition
+       # end
+       #
+       private fun create_intro_contract(v: ContractsVisitor, n_condition: nullable AExpr, mclassdef: MClassDef): AMethPropdef
+       do
+               var n_block = v.ast_builder.make_block
+               if n_condition != null then
+                       # Create a new tid to set the name of the assert for more explicit error
+                       var tid = new TId.init_tk(self.location)
+                       tid.text = "{self.contract_name}"
+                       n_block.add v.ast_builder.make_assert(tid, n_condition, null)
+               end
+               return make_contract(v, n_block, mclassdef)
+       end
+
+       # Create a contract with old (super) and the new conditions
+       private fun create_subcontract(v: ContractsVisitor, ncondition: nullable AExpr, mclassdef: MClassDef): AMethPropdef
+       do
+               var args = v.n_signature.make_parameter_read(v.ast_builder)
+               var n_block = v.ast_builder.make_block
+               if ncondition != null then n_block = self.create_nblock(v, ncondition, args)
+               return make_contract(v, n_block, mclassdef)
+       end
+
+       # Build a method with a specific block `n_block` in a specified `mclassdef`
+       private fun make_contract(v: ContractsVisitor, n_block: AExpr, mclassdef: MClassDef): AMethPropdef
+       do
+               var n_contractdef = intro_mclassdef.mclass.create_empty_method(v, self, mclassdef, v.m_signature, v.n_signature)
+               n_contractdef.n_block = n_block
+               # Define the location of the new method for corresponding of the annotation location
+               n_contractdef.location = v.current_location
+               n_contractdef.do_all(v.toolcontext)
+               return n_contractdef
+       end
+end
+
+# A expect (precondition) contract representation
+# This method check if the requirements of the called method is true.
+class MExpect
+       super MContract
+
+       # Define the name of the contract
+       redef fun contract_name: String do return "expect"
+
+       # Display warning if no contract is defined at introduction `expect`,
+       # because if no contract is defined at the introduction the added
+       # contracts will not cause any error even if they are not satisfied.
+       #
+       # exemple
+       # ~~~nitish
+       # class A
+       #       fun bar [...]
+       #       fun _bar_expect([...])
+       #       do
+       #               [empty contract]
+       #       end
+       # end
+       #
+       # redef class A
+       #       redef fun bar is expect(contract_condition)
+       #       redef fun _bar_expect([...])
+       #       do
+       #               if not (contract_condition) then super
+       #       end
+       # end
+       # ~~~~
+       #
+       redef fun no_intro_contract(v: ContractsVisitor, a: AAnnotation)
+       do
+               v.toolcontext.warning(a.location,"","Useless contract: No contract defined at the introduction of the method")
+       end
+
+       redef fun create_nblock(v: ContractsVisitor, n_condition: AExpr, args: Array[AExpr]): ABlockExpr
+       do
+               # Creating the if expression with the new condition
+               var if_block = v.ast_builder.make_if(n_condition, n_condition.mtype)
+               # Creating and adding return expr to the then case
+               if_block.n_then = v.ast_builder.make_return(null)
+               # Creating the super call to the contract and adding this to else case
+               if_block.n_else = v.ast_builder.make_super_call(args,null)
+               var n_block = v.ast_builder.make_block
+               n_block.add if_block
+               return n_block
+       end
+
+       redef fun adapt_block_to_contract(v: ContractsVisitor, n_mpropdef: AMethPropdef)
+       do
+               var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self, true)
+               var n_self = new ASelfExpr
+               var args = n_mpropdef.n_signature.make_parameter_read(v.ast_builder)
+               var n_callexpect = v.ast_builder.make_call(n_self,callsite,args)
+               # Creation of the new instruction block with the call to expect condition
+               var actual_expr = n_mpropdef.n_block
+               var new_block = new ABlockExpr
+               new_block.n_expr.push n_callexpect
+               if actual_expr isa ABlockExpr then
+                       new_block.n_expr.add_all(actual_expr.n_expr)
+               else if actual_expr != null then
+                       new_block.n_expr.push(actual_expr)
+               end
+               n_mpropdef.n_block = new_block
+       end
+end
+
+# The root of all contracts where the call is after the execution of the original method (`invariant` and `ensure`).
+abstract class BottomMContract
+       super MContract
+
+       redef fun create_nblock(v: ContractsVisitor, n_condition: AExpr, args: Array[AExpr]): ABlockExpr
+       do
+               var tid = new TId.init_tk(v.current_location)
+               tid.text = "{contract_name}"
+               # Creating the assert expression with the new condition
+               var assert_block = v.ast_builder.make_assert(tid,n_condition,null)
+               # Creating the super call to the contract
+               var super_call = v.ast_builder.make_super_call(args,null)
+               # Define contract block
+               var n_block = v.ast_builder.make_block
+               # Adding the expressions to the block
+               n_block.add super_call
+               n_block.add assert_block
+               return n_block
+       end
+
+       # Inject the result variable in the `n_block` of the given `n_mpropdef`.
+       private fun inject_result(v: ContractsVisitor, n_mpropdef: AMethPropdef, ret_type: MType): Variable
+       do
+               var actual_block = n_mpropdef.n_block
+               # never happen. If it's the case the problem is in the contract facet building
+               assert actual_block isa ABlockExpr
+
+               var return_var: nullable Variable = null
+
+               var return_expr = actual_block.n_expr.last.as(AReturnExpr)
+
+               var returned_expr = return_expr.n_expr
+               # The return node has no returned expression
+               assert returned_expr != null
+
+               # Check if the result variable already exit
+               if returned_expr isa AVarExpr then
+                       if returned_expr.variable.name == "result" then
+                               return_var = returned_expr.variable
+                       end
+               end
+
+               return_var = new Variable("result")
+               # Creating a new variable to keep the old return of the method
+               var assign_result = v.ast_builder.make_var_assign(return_var, returned_expr)
+               # Remove the actual return
+               actual_block.n_expr.pop
+               # Set the return type
+               return_var.declared_type = ret_type
+               # Adding the reading expr of result variable to the block
+               actual_block.add assign_result
+               # Expr to read the result variable
+               var read_result = v.ast_builder.make_var_read(return_var, ret_type)
+               # Definition of the new return
+               return_expr = v.ast_builder.make_return(read_result)
+               actual_block.add return_expr
+               return return_var
+       end
+end
+
+# A ensure (postcondition) representation
+# This method check if the called method respects the expectations of the caller.
+class MEnsure
+       super BottomMContract
+
+       # Define the name of the contract
+       redef fun contract_name: String do return "ensure"
+
+       redef fun adapt_specific_msignature(m_signature: MSignature): MSignature
+       do
+               return m_signature.adapt_to_ensurecondition
+       end
+
+       redef fun adapt_specific_nsignature(n_signature: ASignature): ASignature
+       do
+               return n_signature.adapt_to_ensurecondition
+       end
+
+       redef fun adapt_block_to_contract(v: ContractsVisitor, n_mpropdef: AMethPropdef)
+       do
+               var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self, true)
+               var n_self = new ASelfExpr
+               # argument to call the contract method
+               var args = n_mpropdef.n_signature.make_parameter_read(v.ast_builder)
+               # Inject the variable result
+               # The cast is always safe because the online adapted method is the contract facet
+
+               var actual_block = n_mpropdef.n_block
+               # never happen. If it's the case the problem is in the contract facet building
+               assert actual_block isa ABlockExpr
+
+               var ret_type = n_mpropdef.mpropdef.mproperty.intro.msignature.return_mtype
+               if ret_type != null then
+                       var result_var = inject_result(v, n_mpropdef, ret_type)
+                       # Expr to read the result variable
+                       var read_result = v.ast_builder.make_var_read(result_var, ret_type)
+                       var return_expr = actual_block.n_expr.pop
+                       # Adding the read return to argument
+                       args.add(read_result)
+                       var n_callcontract = v.ast_builder.make_call(n_self,callsite,args)
+                       actual_block.add_all([n_callcontract,return_expr])
+               else
+                       # build the call to the contract method
+                       var n_callcontract = v.ast_builder.make_call(n_self,callsite,args)
+                       actual_block.add n_callcontract
+               end
+       end
+end
+
+redef class MClass
+
+       # This method create an abstract method representation with this MMethodDef an this AMethoddef
+       private fun create_abstract_method(v: ContractsVisitor, mproperty: MMethod, mclassdef: MClassDef, msignature: nullable MSignature, n_signature: ASignature): AMethPropdef
+       do
+               # new methoddef definition
+               var m_def = new MMethodDef(mclassdef, mproperty, v.current_location)
+               # set the signature
+               if msignature != null then m_def.msignature = msignature.clone
+               # set the abstract flag
+               m_def.is_abstract = true
+               # Build the new node method
+               var n_def = v.ast_builder.make_method(null,null,m_def,n_signature,null,null,null,null)
+               # Define the location of the new method for corresponding of the actual method
+               n_def.location = v.current_location
+               # Association new npropdef to mpropdef
+               v.toolcontext.modelbuilder.unsafe_add_mpropdef2npropdef(m_def,n_def)
+               return n_def
+       end
+
+       # Create method with an empty block
+       # the `mproperty` i.e the global property definition. The mclassdef to set where the method is declared and it's model `msignature` and ast `n_signature` signature
+       private fun create_empty_method(v: ContractsVisitor, mproperty: MMethod, mclassdef: MClassDef, msignature: nullable MSignature, n_signature: ASignature): AMethPropdef
+       do
+               var n_def = create_abstract_method(v, mproperty, mclassdef, msignature, n_signature)
+               n_def.mpropdef.is_abstract = false
+               n_def.n_block = v.ast_builder.make_block
+               return n_def
+       end
+end
+
+redef class MMethod
+
+       # The contract facet of the method
+       # it's representing the method with contract
+       # This method call the contract and the method
+       var mcontract_facet: nullable MMethod = null
+
+       # The expected contract method
+       var mexpect: nullable MExpect = null
+
+       # The ensure contract method
+       var mensure: nullable MEnsure = null
+
+       # Check if the MMethod has no ensure contract
+       # if this is the case returns false and built it
+       # else return true
+       private fun check_exist_ensure: Bool
+       do
+               if self.mensure != null then return true
+               # build a new `MEnsure` contract
+               self.mensure = new MEnsure(intro_mclassdef, "_ensure_{name}", intro_mclassdef.location, public_visibility)
+               return false
+       end
+
+       # Check if the MMethod has no expect contract
+       # if this is the case returns false and built it
+       # else return true
+       private fun check_exist_expect: Bool
+       do
+               if self.mexpect != null then return true
+               # build a new `MExpect` contract
+               self.mexpect = new MExpect(intro_mclassdef, "_expect_{name}", intro_mclassdef.location, public_visibility)
+               return false
+       end
+
+       # Check if the MMethod has an contract facet
+       # If the method has no contract facet she create it
+       private fun check_exist_contract_facet(mpropdef : MMethodDef): Bool
+       do
+               if self.mcontract_facet != null then return true
+               # build a new `MMethod` contract
+               self.mcontract_facet = new MMethod(intro_mclassdef, "_contract_{name}", intro_mclassdef.location, public_visibility)
+               return false
+       end
+end
+
+redef class MMethodDef
+
+       # Verification of the contract facet
+       # Check if a contract facet already exists to use it again or if it is necessary to create it.
+       private fun check_contract_facet(v: ContractsVisitor, n_signature: ASignature, classdef: MClassDef, mcontract: MContract, exist_contract: Bool)
+       do
+               var exist_contract_facet = mproperty.check_exist_contract_facet(self)
+               if exist_contract_facet and exist_contract then return
+
+               var contract_facet: AMethPropdef
+               if not exist_contract_facet then
+                       # If has no contract facet in intro just create it
+                       if classdef != mproperty.intro_mclassdef then create_contract_facet(v, mproperty.intro_mclassdef, n_signature)
+                       # If has no contract facet just create it
+                       contract_facet = create_contract_facet(v, classdef, n_signature)
+               else
+                       # Check if the contract facet already exist in this context (in this classdef)
+                       if classdef.mpropdefs_by_property.has_key(mproperty.mcontract_facet) then
+                               # get the define
+                               contract_facet = v.toolcontext.modelbuilder.mpropdef2node(classdef.mpropdefs_by_property[mproperty.mcontract_facet]).as(AMethPropdef)
+                       else
+                               # create a new contract facet definition
+                               contract_facet = create_contract_facet(v, classdef, n_signature)
+                               var block = v.ast_builder.make_block
+                               # super call to the contract facet
+                               var n_super_call = v.ast_builder.make_super_call(n_signature.make_parameter_read(v.ast_builder), null)
+                               # verification for add a return or not
+                               if contract_facet.mpropdef.msignature.return_mtype != null then
+                                       block.add(v.ast_builder.make_return(n_super_call))
+                               else
+                                       block.add(n_super_call)
+                               end
+                               contract_facet.n_block = block
+                       end
+               end
+               contract_facet.adapt_block_to_contract(v, mcontract, contract_facet)
+               contract_facet.location = v.current_location
+               contract_facet.do_all(v.toolcontext)
+       end
+
+       # Method to create a contract facet of the method
+       private fun create_contract_facet(v: ContractsVisitor, classdef: MClassDef, n_signature: ASignature): AMethPropdef
+       do
+               var contract_facet = mproperty.mcontract_facet
+               assert contract_facet != null
+               # Defines the contract phase is an init or not
+               # it is necessary to use the contracts on constructor
+               contract_facet.is_init = self.mproperty.is_init
+
+               # check if the method has an `msignature` to copy it.
+               var m_signature: nullable MSignature = null
+               if mproperty.intro.msignature != null then m_signature = mproperty.intro.msignature.clone
+
+               var n_contractdef = classdef.mclass.create_empty_method(v, contract_facet, classdef, m_signature, n_signature)
+               # FIXME set the location because the callsite creation need the node location
+               n_contractdef.location = v.current_location
+               n_contractdef.validate
+
+               var block = v.ast_builder.make_block
+               var n_self = new ASelfExpr
+               var args = n_contractdef.n_signature.make_parameter_read(v.ast_builder)
+               var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_contractdef, mproperty, true)
+               var n_call = v.ast_builder.make_call(n_self, callsite, args)
+
+               if m_signature.return_mtype == null then
+                       block.add(n_call)
+               else
+                       block.add(v.ast_builder.make_return(n_call))
+               end
+
+               n_contractdef.n_block = block
+               n_contractdef.do_all(v.toolcontext)
+               return n_contractdef
+       end
+
+       # Entry point to build contract (define the contract facet and define the contract method verification)
+       private fun construct_contract(v: ContractsVisitor, n_signature: ASignature, n_annotation: AAnnotation, mcontract: MContract, exist_contract: Bool)
+       do
+               if check_same_contract(v, n_annotation, mcontract) then return
+               if not exist_contract and not is_intro then no_intro_contract(v, n_signature, mcontract, n_annotation)
+               v.define_signature(mcontract, n_signature, mproperty.intro.msignature)
+
+               var conditiondef = v.build_contract(n_annotation, mcontract, mclassdef)
+               check_contract_facet(v, n_signature.clone, mclassdef, mcontract, exist_contract)
+               has_contract = true
+       end
+
+       # Create a contract on the introduction classdef of the property.
+       # Display an warning message if necessary
+       private fun no_intro_contract(v: ContractsVisitor, n_signature: ASignature, mcontract: MContract, n_annotation: AAnnotation)
+       do
+               mcontract.create_empty_contract(v, mcontract.intro_mclassdef, mcontract.adapt_msignature(self.mproperty.intro.msignature), mcontract.adapt_nsignature(n_signature))
+               mcontract.no_intro_contract(v, n_annotation)
+               mproperty.intro.has_contract = true
+       end
+
+       # Is the contract already defined in the context
+       #
+       # Exemple :
+       # fun foo is expect([...]), expect([...])
+       #
+       # Here `check_same_contract` display an error when the second expect is processed
+       private fun check_same_contract(v: ContractsVisitor, n_annotation: AAnnotation ,mcontract: MContract): Bool
+       do
+               if self.mclassdef.mpropdefs_by_property.has_key(mcontract) then
+                       v.toolcontext.error(n_annotation.location, "The method already has a defined `{mcontract.contract_name}` contract at line {self.mclassdef.mpropdefs_by_property[mcontract].location.line_start}")
+                       return true
+               end
+               return false
+       end
+end
+
+redef class MPropDef
+       # flag to indicate is the `MPropDef` has a contract
+       var has_contract = false
+end
+
+redef class APropdef
+       redef fun check_callsite(v)
+       do
+               v.visited_method = self
+       end
+end
+
+redef class AMethPropdef
+
+       # Execute all method verification scope flow and typing.
+       # It also execute an ast validation to define all parents and all locations
+       private fun do_all(toolcontext: ToolContext)
+       do
+               self.validate
+               # FIXME: The `do_` usage it is maybe to much (verification...). Solution: Cut the `do_` methods into simpler parts
+               self.do_scope(toolcontext)
+               self.do_flow(toolcontext)
+               self.do_typing(toolcontext.modelbuilder)
+       end
+
+       # Entry point to create a contract (verification of inheritance, or new contract).
+       redef fun create_contracts(v)
+       do
+               v.ast_builder.check_mmodule(mpropdef.mclassdef.mmodule)
+
+               v.current_location = self.location
+               v.is_intro_contract = mpropdef.is_intro
+
+               if n_annotations != null then
+                       for n_annotation in n_annotations.n_items do
+                               check_annotation(v,n_annotation)
+                       end
+               end
+
+               if not mpropdef.is_intro and not v.find_no_contract then
+                       self.check_redef(v)
+               end
+
+               # reset the flag
+               v.find_no_contract = false
+       end
+
+       # Verification of the annotation to know if it is a contract annotation.
+       # If this is the case, we built the appropriate contract.
+       private fun check_annotation(v: ContractsVisitor, n_annotation: AAnnotation)
+       do
+               if n_annotation.name == "expect" then
+                       if not v.check_usage_expect(mpropdef.mclassdef.mmodule) then return
+                       var exist_contract = mpropdef.mproperty.check_exist_expect
+                       mpropdef.construct_contract(v, self.n_signature.as(not null), n_annotation, mpropdef.mproperty.mexpect.as(not null), exist_contract)
+               else if n_annotation.name == "ensure" then
+                       if not v.check_usage_ensure(mpropdef.mclassdef.mmodule) then return
+                       var exist_contract = mpropdef.mproperty.check_exist_ensure
+                       mpropdef.construct_contract(v, self.n_signature.as(not null), n_annotation, mpropdef.mproperty.mensure.as(not null), exist_contract)
+               else if n_annotation.name == "no_contract" then
+                       # no_contract found set the flag to true
+                       v.find_no_contract = true
+               end
+       end
+
+       # Verification if the method have an inherited contract to apply it.
+       private fun check_redef(v: ContractsVisitor)
+       do
+               # Check if the method has an attached contract
+               if not mpropdef.has_contract then
+                       if mpropdef.mproperty.intro.has_contract then
+                               mpropdef.has_contract = true
+                       end
+               end
+       end
+
+       # Adapt the block to use the contracts
+       private fun adapt_block_to_contract(v: ContractsVisitor, contract: MContract, n_mpropdef: AMethPropdef)
+       do
+               contract.adapt_block_to_contract(v, n_mpropdef)
+               mpropdef.has_contract = true
+               n_mpropdef.do_all(v.toolcontext)
+       end
+end
+
+redef class MSignature
+
+       # Adapt signature for a expect condition
+       # Removed the return type is it not necessary
+       private fun adapt_to_condition: MSignature do return new MSignature(mparameters.to_a, null)
+
+       # Adapt signature for a ensure condition
+       #
+       # Create new parameter with the return type
+       private fun adapt_to_ensurecondition: MSignature
+       do
+               var rtype = return_mtype
+               var msignature = adapt_to_condition
+               if rtype != null then
+                       msignature.mparameters.add(new MParameter("result", rtype, false))
+               end
+               return msignature
+       end
+
+       # Adapt signature for a expect condition
+       # Removed the return type is it not necessary
+       private fun clone: MSignature do return new MSignature(mparameters.to_a, return_mtype)
+end
+
+redef class ASignature
+
+       # Create an array of AVarExpr representing the read of every parameters
+       private fun make_parameter_read(ast_builder: ASTBuilder): Array[AVarExpr]
+       do
+               var args = new Array[AVarExpr]
+               for n_param in self.n_params do
+                       var mtype = n_param.variable.declared_type
+                       var variable = n_param.variable
+                       if variable != null and mtype != null then
+                               args.push ast_builder.make_var_read(variable, mtype)
+                       end
+               end
+               return args
+       end
+
+       # Return a copy of self adapted for the expect condition
+       # npropdef it is use to define the parent of the parameters
+       private fun adapt_to_condition(return_type: nullable AType): ASignature
+       do
+               var adapt_nsignature = self.clone
+               adapt_nsignature.n_type = return_type
+               return adapt_nsignature
+       end
+
+       # Return a copy of self adapted for postcondition on npropdef
+       private fun adapt_to_ensurecondition: ASignature do
+               var nsignature = adapt_to_condition(null)
+               if ret_type != null then
+                       var n_id = new TId
+                       n_id.text = "result"
+                       var new_param = new AParam
+                       new_param.n_id = n_id
+                       new_param.variable = new Variable(n_id.text)
+                       new_param.variable.declared_type = ret_type
+                       nsignature.n_params.add new_param
+               end
+               return nsignature
+       end
+end
+
+redef class ASendExpr
+       redef fun check_callsite(v)
+       do
+               var actual_callsite = callsite
+               if actual_callsite != null then
+                       callsite = v.drive_method_contract(actual_callsite)
+               end
+       end
+end
+
+redef class ANewExpr
+       redef fun check_callsite(v)
+       do
+               var actual_callsite = callsite
+               if actual_callsite != null then
+                       callsite = v.drive_method_contract(actual_callsite)
+               end
+       end
+end
index df312c4..d7c3457 100644 (file)
@@ -21,7 +21,7 @@ abstract class CmdIni
        super CmdEntity
 
        # Ini file
-       var ini: nullable ConfigTree = null
+       var ini: nullable IniFile = null
 
        redef fun init_command do
                var res = super
index 24d1593..011aeef 100644 (file)
 module test_commands
 
 import commands_base
-import frontend
-import frontend::parse_examples
+import test_frontend
 
 # Nitunit test suite specific to commands
 class TestCommands
-
-       # The path to the testunit being executed
-       #
-       # Used to retrieve the path to sources to compile.
-       var test_path: String = "NIT_TESTING_PATH".environ.dirname is lazy
-
-       # Test program to compile
-       #
-       # Default is `$NIT_DIR/tests/test_prog`.
-       var test_src: String = test_path / "../../../../tests/test_prog" is lazy
-
-       # Model used for tests
-       var test_model: Model is noinit
-
-       # ModelBuilder used for tests
-       var test_builder: ModelBuilder is noinit
-
-       # Mainmodule used for tests
-       var test_main: MModule is noinit
-
-       # Initialize test variables
-       #
-       # Must be called before test execution.
-       # FIXME should be before_all
-       fun build_test_env is before do
-               var toolcontext = new ToolContext
-
-               # build model
-               var model = new Model
-               var modelbuilder = new ModelBuilder(model, toolcontext)
-               var mmodules = modelbuilder.parse_full([test_src])
-
-               # process
-               modelbuilder.run_phases
-               toolcontext.run_global_phases(mmodules)
-               var mainmodule = toolcontext.make_main_module(mmodules)
-
-               test_main = mainmodule
-               test_model = model
-               test_builder = modelbuilder
-       end
+       super TestModel
 end
index 5e921b5..ec853de 100644 (file)
@@ -30,15 +30,6 @@ class TestCommandsCatalog
                        var g = p.root
                        assert g != null
                        test_builder.scan_group(g)
-
-                       catalog.deps.add_node(p)
-                       for gg in p.mgroups do for m in gg.mmodules do
-                               for im in m.in_importation.direct_greaters do
-                                       var ip = im.mpackage
-                                       if ip == null or ip == p then continue
-                                       test_catalog.deps.add_edge(p, ip)
-                               end
-                       end
                end
                # Build the catalog
                for mpackage in test_model.mpackages do
index 8afe591..a2f4b47 100644 (file)
@@ -232,8 +232,8 @@ redef class PageMPackage
                super
                main_tab.metadata.cards.add new CardMetadata(mentity, mentity.metadata,
                        doc.catalog.mpackages_stats[mentity],
-                       doc.catalog.deps[mentity].direct_greaters.to_a,
-                       doc.catalog.deps[mentity].direct_smallers.to_a)
+                       doc.catalog.deps.successors(mentity).to_a,
+                       doc.catalog.deps.predecessors(mentity).to_a)
        end
 end
 
index 6ec000f..1b86587 100644 (file)
@@ -400,7 +400,7 @@ redef class MDoc
        var html_synopsis: Writable is lazy do
                var res = new Template
                var syn = inline_proc.process(content.first)
-               res.add "<span class=\"synopsys nitdoc\">{syn}</span>"
+               res.add "<span class=\"synopsis nitdoc\">{syn}</span>"
                return res
        end
 
@@ -420,13 +420,13 @@ redef class MDoc
                var decorator = markdown_proc.decorator.as(NitdocDecorator)
                decorator.current_mdoc = self
                res.add "<div class=\"nitdoc\">"
-               # do not use DocUnit as synopsys
+               # do not use DocUnit as synopsis
                if not lines.is_empty then
                        if not lines.first.has_prefix("    ") and
                           not lines.first.has_prefix("\t") then
-                               # parse synopsys
+                               # parse synopsis
                                var syn = inline_proc.process(lines.shift)
-                               res.add "<h1 class=\"synopsys\">{syn}</h1>"
+                               res.add "<h1 class=\"synopsis\">{syn}</h1>"
                        end
                end
                # check for annotations
@@ -565,7 +565,7 @@ redef class Model
 
        # Get a markdown inline processor for Nitdoc comments.
        #
-       # This processor is specificaly designed to inlinable doc elements like synopsys.
+       # This processor is specificaly designed to inlinable doc elements like synopsis.
        var nitdoc_inline_processor: MarkdownProcessor is lazy, writable do
                var proc = new MarkdownProcessor
                proc.decorator = new InlineDecorator
index 4a442c5..55351fb 100644 (file)
@@ -35,7 +35,7 @@ redef class MDoc
                return res.write_to_string
        end
 
-       # Returns the synopsys formatted for the console
+       # Returns the synopsis formatted for the console
        fun cs_short_comment(no_color: nullable Bool): String do
                if no_color == null or not no_color then
                        return content.first.green
index 371d4cb..5b6b45f 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dObject" title="Root of everything.">Object</a> - <span class="synopsys nitdoc">Root of everything.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dObject" title="Root of everything.">Object</a> - <span class="synopsis nitdoc">Root of everything.</span></li></ul>
index b851952..6663e41 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_36dCharacter_36dObject_58d_58dinit">init</a></li><li><a href="test_prog_36dCharacter_36dtotal_strengh" title="The actual strength of the character.">total_strengh</a> - <span class="synopsys nitdoc">The actual strength of the character.</span></li></ul>
+<ul><li><a href="test_prog_36dCharacter_36dObject_58d_58dinit">init</a></li><li><a href="test_prog_36dCharacter_36dtotal_strengh" title="The actual strength of the character.">total_strengh</a> - <span class="synopsis nitdoc">The actual strength of the character.</span></li></ul>
index 04cf46a..d09e45e 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dAlcoholic" title="Alcoholics are good to nothing escept taking punches.">Alcoholic</a> - <span class="synopsys nitdoc">Alcoholics are good to nothing escept taking punches.</span></li><li><a href="test_prog_58d_58dMagician" title="Magicians know magic and how to use it.">Magician</a> - <span class="synopsys nitdoc">Magicians know magic and how to use it.</span></li><li><a href="test_prog_58d_58dWarrior" title="Warriors are good for fighting.">Warrior</a> - <span class="synopsys nitdoc">Warriors are good for fighting.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dAlcoholic" title="Alcoholics are good to nothing escept taking punches.">Alcoholic</a> - <span class="synopsis nitdoc">Alcoholics are good to nothing escept taking punches.</span></li><li><a href="test_prog_58d_58dMagician" title="Magicians know magic and how to use it.">Magician</a> - <span class="synopsis nitdoc">Magicians know magic and how to use it.</span></li><li><a href="test_prog_58d_58dWarrior" title="Warriors are good for fighting.">Warrior</a> - <span class="synopsis nitdoc">Warriors are good for fighting.</span></li></ul>
index fb53356..c949391 100644 (file)
@@ -1 +1 @@
-<h3><a href="test_prog_58d_58dCharacter" title="Characters can be played by both the human or the machine.">Character</a> - <span class="synopsys nitdoc">Characters can be played by both the human or the machine.</span></h3><div class="nitdoc"></div>
+<h3><a href="test_prog_58d_58dCharacter" title="Characters can be played by both the human or the machine.">Character</a> - <span class="synopsis nitdoc">Characters can be played by both the human or the machine.</span></h3><div class="nitdoc"></div>
index 04cf46a..d09e45e 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dAlcoholic" title="Alcoholics are good to nothing escept taking punches.">Alcoholic</a> - <span class="synopsys nitdoc">Alcoholics are good to nothing escept taking punches.</span></li><li><a href="test_prog_58d_58dMagician" title="Magicians know magic and how to use it.">Magician</a> - <span class="synopsys nitdoc">Magicians know magic and how to use it.</span></li><li><a href="test_prog_58d_58dWarrior" title="Warriors are good for fighting.">Warrior</a> - <span class="synopsys nitdoc">Warriors are good for fighting.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dAlcoholic" title="Alcoholics are good to nothing escept taking punches.">Alcoholic</a> - <span class="synopsis nitdoc">Alcoholics are good to nothing escept taking punches.</span></li><li><a href="test_prog_58d_58dMagician" title="Magicians know magic and how to use it.">Magician</a> - <span class="synopsis nitdoc">Magicians know magic and how to use it.</span></li><li><a href="test_prog_58d_58dWarrior" title="Warriors are good for fighting.">Warrior</a> - <span class="synopsis nitdoc">Warriors are good for fighting.</span></li></ul>
index e00f6c0..fc5836b 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dtest_prog" title="A test program with a fake model to check model tools.">test_prog</a> - <span class="synopsys nitdoc">A test program with a fake model to check model tools.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dtest_prog" title="A test program with a fake model to check model tools.">test_prog</a> - <span class="synopsis nitdoc">A test program with a fake model to check model tools.</span></li></ul>
index 59e52b3..e6f0d3a 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dcareers" title="Careers of the game.">careers</a> - <span class="synopsys nitdoc">Careers of the game.</span></li><li><a href="test_prog_58d_58dcharacter" title="Characters are playable entity in the world.">character</a> - <span class="synopsys nitdoc">Characters are playable entity in the world.</span></li><li><a href="test_prog_58d_58dcombat" title="COmbat interactions between characters.">combat</a> - <span class="synopsys nitdoc">COmbat interactions between characters.</span></li><li><a href="excluded_58d_58dexcluded">excluded</a></li><li><a href="test_prog_58d_58dgame" title="A game abstraction for RPG.">game</a> - <span class="synopsys nitdoc">A game abstraction for RPG.</span></li><li><a href="test_prog_58d_58dgame_examples">game_examples</a></li><li><a href="test_prog_58d_58dplatform" title="Declares base types allowed on the platform.">platform</a> - <span class="synopsys nitdoc">Declares base types allowed on the platform.</span></li><li><a href="test_prog_58d_58draces" title="Races of the game.">races</a> - <span class="synopsys nitdoc">Races of the game.</span></li><li><a href="test_prog_58d_58drpg" title="A worlg RPG abstraction.">rpg</a> - <span class="synopsys nitdoc">A worlg RPG abstraction.</span></li><li><a href="test_prog_58d_58dtest_game">test_game</a></li><li><a href="test_prog_58d_58dtest_prog" title="A test program with a fake model to check model tools.">test_prog</a> - <span class="synopsys nitdoc">A test program with a fake model to check model tools.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dcareers" title="Careers of the game.">careers</a> - <span class="synopsis nitdoc">Careers of the game.</span></li><li><a href="test_prog_58d_58dcharacter" title="Characters are playable entity in the world.">character</a> - <span class="synopsis nitdoc">Characters are playable entity in the world.</span></li><li><a href="test_prog_58d_58dcombat" title="COmbat interactions between characters.">combat</a> - <span class="synopsis nitdoc">COmbat interactions between characters.</span></li><li><a href="excluded_58d_58dexcluded">excluded</a></li><li><a href="test_prog_58d_58dgame" title="A game abstraction for RPG.">game</a> - <span class="synopsis nitdoc">A game abstraction for RPG.</span></li><li><a href="test_prog_58d_58dgame_examples">game_examples</a></li><li><a href="test_prog_58d_58dplatform" title="Declares base types allowed on the platform.">platform</a> - <span class="synopsis nitdoc">Declares base types allowed on the platform.</span></li><li><a href="test_prog_58d_58draces" title="Races of the game.">races</a> - <span class="synopsis nitdoc">Races of the game.</span></li><li><a href="test_prog_58d_58drpg" title="A worlg RPG abstraction.">rpg</a> - <span class="synopsis nitdoc">A worlg RPG abstraction.</span></li><li><a href="test_prog_58d_58dtest_game">test_game</a></li><li><a href="test_prog_58d_58dtest_prog" title="A test program with a fake model to check model tools.">test_prog</a> - <span class="synopsis nitdoc">A test program with a fake model to check model tools.</span></li></ul>
index 2953e58..3d4fcc3 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dCareer" title="A `Career` gives a characteristic bonus or malus to the character.">Career</a> - <span class="synopsys nitdoc">A <code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_t">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dCareer" title="A `Career` gives a characteristic bonus or malus to the character.">Career</a> - <span class="synopsis nitdoc">A <code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_t">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span></li></ul>
index 2953e58..3d4fcc3 100644 (file)
@@ -1 +1 @@
-<ul><li><a href="test_prog_58d_58dCareer" title="A `Career` gives a characteristic bonus or malus to the character.">Career</a> - <span class="synopsys nitdoc">A <code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_t">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span></li></ul>
+<ul><li><a href="test_prog_58d_58dCareer" title="A `Career` gives a characteristic bonus or malus to the character.">Career</a> - <span class="synopsis nitdoc">A <code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_t">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span></li></ul>
index 26a3c60..359d753 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Object",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>",
                "modifiers": ["interface"]
        }],
        "page": null,
index b49877d..0b60952 100644 (file)
@@ -38,7 +38,7 @@
                "class_name": "MMethodDef",
                "full_name": "test_prog$Character$total_strengh",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">The actual strength of the character.</span>",
                "modifiers": ["fun"],
                "is_intro": true,
                "msignature": {
@@ -47,7 +47,7 @@
                        "return_mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }
        }],
index 0f1dd96..bc08d45 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Alcoholic",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
                "modifiers": ["class"]
        }, {
                "name": "Magician",
@@ -27,7 +27,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Magician",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Magicians know magic and how to use it.</span>",
                "modifiers": ["class"]
        }, {
                "name": "Warrior",
@@ -42,7 +42,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Warrior",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Warriors are good for fighting.</span>",
                "modifiers": ["class"]
        }],
        "page": null,
index 0f1dd96..bc08d45 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Alcoholic",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
                "modifiers": ["class"]
        }, {
                "name": "Magician",
@@ -27,7 +27,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Magician",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Magicians know magic and how to use it.</span>",
                "modifiers": ["class"]
        }, {
                "name": "Warrior",
@@ -42,7 +42,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Warrior",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Warriors are good for fighting.</span>",
                "modifiers": ["class"]
        }],
        "page": null,
index e229fc7..280be8f 100644 (file)
@@ -11,6 +11,6 @@
        "class_name": "MClass",
        "full_name": "test_prog::Character",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters can be played by both the human or the machine.</span>",
        "modifiers": ["class"]
 }
index e483a2e..88019d8 100644 (file)
@@ -20,7 +20,7 @@
                "static_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }, {
                "name": "_intelligence_bonus",
@@ -43,7 +43,7 @@
                "static_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }, {
                "name": "_strength_bonus",
@@ -66,7 +66,7 @@
                "static_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }, {
                "name": "endurance_bonus",
@@ -89,7 +89,7 @@
                        "return_mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }
        }, {
                                "mtype": {
                                        "name": "Int",
                                        "synopsis": "Some services about Integers.",
-                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                                }
                        }],
                        "return_mtype": null
                        "return_mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }
        }, {
                                "mtype": {
                                        "name": "Int",
                                        "synopsis": "Some services about Integers.",
-                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                                }
                        }],
                        "return_mtype": null
                        "return_mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }
        }, {
                                "mtype": {
                                        "name": "Int",
                                        "synopsis": "Some services about Integers.",
-                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                                }
                        }],
                        "return_mtype": null
index 529d91b..33c44c6 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::test_prog",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A test program with a fake model to check model tools.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A test program with a fake model to check model tools.</span>",
                "modifiers": ["module"]
        }]
 }
index 5d6c8d9..b4597e1 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::careers",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Careers of the game.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Careers of the game.</span>",
                "modifiers": ["module"]
        }, {
                "name": "character",
@@ -27,7 +27,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::character",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are playable entity in the world.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Characters are playable entity in the world.</span>",
                "modifiers": ["module"]
        }, {
                "name": "combat",
@@ -42,7 +42,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::combat",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">COmbat interactions between characters.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">COmbat interactions between characters.</span>",
                "modifiers": ["module"]
        }, {
                "name": "excluded",
@@ -68,7 +68,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::game",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A game abstraction for RPG.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A game abstraction for RPG.</span>",
                "modifiers": ["module"]
        }, {
                "name": "game_examples",
@@ -95,7 +95,7 @@
                "class_name": "MModule",
                "full_name": "test_prog::platform",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Declares base types allowed on the platform.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Declares base types allowed on the platform.</span>",
                "modifiers": ["module"]
        }, {
                "name": "races",
                "class_name": "MModule",
                "full_name": "test_prog::races",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Races of the game.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Races of the game.</span>",
                "modifiers": ["module"]
        }, {
                "name": "rpg",
                "class_name": "MModule",
                "full_name": "test_prog::rpg",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A worlg RPG abstraction.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A worlg RPG abstraction.</span>",
                "modifiers": ["module"]
        }, {
                "name": "test_game",
                "class_name": "MModule",
                "full_name": "test_prog::test_prog",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A test program with a fake model to check model tools.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A test program with a fake model to check model tools.</span>",
                "modifiers": ["module"]
        }],
        "page": null,
index 5e2fe63..f734635 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Career",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
                "modifiers": ["abstract class"]
        }],
        "page": null,
index 93e7114..853bacb 100644 (file)
@@ -12,7 +12,7 @@
                "class_name": "MClass",
                "full_name": "test_prog::Career",
                "visibility": "public",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
                "modifiers": ["abstract class"]
        }],
        "page": 1,
index d2f6c12..480eda7 100644 (file)
 module test_json_model is test
 
 import json_model
-import frontend
+import test_frontend
 
 class TestModelSerialization
+       super TestModel
        test
 
-       var suite_path: String = "NIT_TESTING_PATH".environ
-       var lib_path: String = "{suite_path.dirname}/../../../../tests/test_prog"
-
-       var mainmodule: MModule is noinit
-
-       private var model: Model do
-               var toolcontext = new ToolContext
-               var model = new Model
-               var mbuilder = new ModelBuilder(model, toolcontext)
-               var mmodules = mbuilder.parse_full([lib_path])
-               if mmodules.is_empty then return model
-               mbuilder.run_phases
-               toolcontext.run_global_phases(mmodules)
-               mainmodule = mmodules.first
-               return model
-       end
-
        fun test_refs_to_full_json is test do
                var mentities = new Array[MEntity]
-               mentities.add model.mpackages.first
-               mentities.add model.mmodules.first
-               mentities.add model.mclasses.first
+               mentities.add test_model.mpackages.first
+               mentities.add test_model.mmodules.first
+               mentities.add test_model.mclasses.first
                for mentity in mentities do
                        print ((new MEntityRef(mentity)).serialize_to_json(pretty = true, plain = true))
                end
        end
 
        fun test_packages_to_full_json is test do
-               for mentity in model.mpackages do
+               for mentity in test_model.mpackages do
                        print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_groups_to_full_json is test do
-               for mpackage in model.mpackages do
+               for mpackage in test_model.mpackages do
                        for mentity in mpackage.mgroups do
                                print mentity.serialize_to_json(pretty = true, plain = true)
                        end
@@ -62,19 +46,19 @@ class TestModelSerialization
        end
 
        fun test_modules_to_full_json is test do
-               for mentity in model.mmodules do
+               for mentity in test_model.mmodules do
                        print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_classes_to_full_json is test do
-               for mentity in model.mclasses do
+               for mentity in test_model.mclasses do
                        print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_classdefs_to_full_json is test do
-               for mclass in model.mclasses do
+               for mclass in test_model.mclasses do
                        for mentity in mclass.mclassdefs do
                                print mentity.serialize_to_json(pretty = true, plain = true)
                        end
@@ -82,13 +66,13 @@ class TestModelSerialization
        end
 
        fun test_props_to_full_json is test do
-               for mentity in model.mproperties do
+               for mentity in test_model.mproperties do
                        print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_propdefs_to_full_json is test do
-               for mprop in model.mproperties do
+               for mprop in test_model.mproperties do
                        for mentity in mprop.mpropdefs do
                                print mentity.serialize_to_json(pretty = true, plain = true)
                        end
index 42e562f..7c30dab 100644 (file)
@@ -11,7 +11,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$Object",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>",
        "modifiers": ["interface"],
        "is_intro": true
 }
@@ -28,7 +28,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$Int",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
@@ -45,7 +45,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$Float",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
@@ -62,7 +62,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$Bool",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
@@ -79,7 +79,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$String",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
@@ -96,7 +96,7 @@
        "class_name": "MClassDef",
        "full_name": "test_prog$List",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>",
        "modifiers": ["class"],
        "is_intro": true,
        "mparameters": [{
                "mtype": {
                        "name": "nullable Object",
                        "synopsis": "Root of everything.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>"
                }
        }]
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Sys",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Sys</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Sys</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog::test_prog$Sys",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Sys</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Sys</span>",
        "modifiers": ["redef", "class"]
 }
 {
        "class_name": "MClassDef",
        "full_name": "test_prog$Career",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
        "modifiers": ["abstract class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Warrior",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Warriors are good for fighting.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Magician",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Magicians know magic and how to use it.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Alcoholic",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Race",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
        "modifiers": ["abstract class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Human",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Humans are able to do everithing.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Humans are able to do everithing.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Dwarf",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves make strong warriors.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Dwarves make strong warriors.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog::combat$Dwarf",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves can be used as weapons.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Dwarves can be used as weapons.</span>",
        "modifiers": ["redef", "class"]
 }
 {
        "class_name": "MClassDef",
        "full_name": "test_prog$Elf",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Elves make good magicians.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Elves make good magicians.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Character",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters can be played by both the human or the machine.</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog::combat$Character",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are now <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Comabatable</span></span></span></code></span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters are now <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Comabatable</span></span></span></code></span>",
        "modifiers": ["redef", "class"]
 }
 {
        "class_name": "MClassDef",
        "full_name": "test_prog$Weapon",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
        "modifiers": ["interface"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Combatable",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
        "modifiers": ["interface"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$Game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
        "modifiers": ["interface"],
        "is_intro": true
 }
        "class_name": "MClassDef",
        "full_name": "test_prog$MyGame",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">This is an example of how to implement the Game interface</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">This is an example of how to implement the Game interface</span>",
        "modifiers": ["class"],
        "is_intro": true
 }
index 18c77c4..bd913fb 100644 (file)
@@ -11,7 +11,7 @@
        "class_name": "MClass",
        "full_name": "test_prog::Object",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>",
        "modifiers": ["interface"]
 }
 {
@@ -27,7 +27,7 @@
        "class_name": "MClass",
        "full_name": "test_prog::Int",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>",
        "modifiers": ["class"]
 }
 {
@@ -43,7 +43,7 @@
        "class_name": "MClass",
        "full_name": "test_prog::Float",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>",
        "modifiers": ["class"]
 }
 {
@@ -59,7 +59,7 @@
        "class_name": "MClass",
        "full_name": "test_prog::Bool",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
        "modifiers": ["class"]
 }
 {
@@ -75,7 +75,7 @@
        "class_name": "MClass",
        "full_name": "test_prog::String",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::List",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>",
        "modifiers": ["class"],
        "mparameters": [{
                "name": "E",
                "mtype": {
                        "name": "nullable Object",
                        "synopsis": "Root of everything.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>"
                }
        }]
 }
        "class_name": "MClass",
        "full_name": "test_prog::Sys",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Sys</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Sys</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Career",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
        "modifiers": ["abstract class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Warrior",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Warriors are good for fighting.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Magician",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Magicians know magic and how to use it.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Alcoholic",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Race",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
        "modifiers": ["abstract class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Human",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Humans are able to do everithing.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Humans are able to do everithing.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Dwarf",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves make strong warriors.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Dwarves make strong warriors.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Elf",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Elves make good magicians.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Elves make good magicians.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Character",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters can be played by both the human or the machine.</span>",
        "modifiers": ["class"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Weapon",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
        "modifiers": ["interface"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Combatable",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
        "modifiers": ["interface"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::Game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
        "modifiers": ["interface"]
 }
 {
        "class_name": "MClass",
        "full_name": "test_prog::MyGame",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">This is an example of how to implement the Game interface</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">This is an example of how to implement the Game interface</span>",
        "modifiers": ["class"]
 }
 {
index 885eefe..48db918 100644 (file)
@@ -8,7 +8,7 @@
        "class_name": "MGroup",
        "full_name": "test_prog>",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Test program for model tools.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Test program for model tools.</span>",
        "modifiers": ["group"]
 }
 {
@@ -37,7 +37,7 @@
        "class_name": "MGroup",
        "full_name": "test_prog>game>",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Gaming group</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Gaming group</span>",
        "modifiers": ["group"]
 }
 {
@@ -66,7 +66,7 @@
        "class_name": "MGroup",
        "full_name": "test_prog>platform>",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Fictive Crappy Platform.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Fictive Crappy Platform.</span>",
        "modifiers": ["group"]
 }
 {
@@ -82,7 +82,7 @@
        "class_name": "MGroup",
        "full_name": "test_prog>rpg>",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Role Playing Game group</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Role Playing Game group</span>",
        "modifiers": ["group"]
 }
 {
index 857fcb1..ee79241 100644 (file)
@@ -36,7 +36,7 @@
        "class_name": "MModule",
        "full_name": "test_prog::game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A game abstraction for RPG.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A game abstraction for RPG.</span>",
        "modifiers": ["module"]
 }
 {
@@ -52,7 +52,7 @@
        "class_name": "MModule",
        "full_name": "test_prog::platform",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Declares base types allowed on the platform.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Declares base types allowed on the platform.</span>",
        "modifiers": ["module"]
 }
 {
@@ -68,7 +68,7 @@
        "class_name": "MModule",
        "full_name": "test_prog::careers",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Careers of the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Careers of the game.</span>",
        "modifiers": ["module"]
 }
 {
@@ -84,7 +84,7 @@
        "class_name": "MModule",
        "full_name": "test_prog::character",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are playable entity in the world.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters are playable entity in the world.</span>",
        "modifiers": ["module"]
 }
 {
        "class_name": "MModule",
        "full_name": "test_prog::combat",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">COmbat interactions between characters.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">COmbat interactions between characters.</span>",
        "modifiers": ["module"]
 }
 {
        "class_name": "MModule",
        "full_name": "test_prog::races",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Races of the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Races of the game.</span>",
        "modifiers": ["module"]
 }
 {
        "class_name": "MModule",
        "full_name": "test_prog::rpg",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A worlg RPG abstraction.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A worlg RPG abstraction.</span>",
        "modifiers": ["module"]
 }
 {
        "class_name": "MModule",
        "full_name": "test_prog::test_prog",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A test program with a fake model to check model tools.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A test program with a fake model to check model tools.</span>",
        "modifiers": ["module"]
 }
 {
        "visibility": "public",
        "modifiers": ["module"]
 }
+{
+       "name": "test_prog-m",
+       "namespace": [{
+               "name": "test_prog-m"
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog-m",
+       "visibility": "public",
+       "modifiers": ["module"]
+}
index 8715a80..6291dc0 100644 (file)
@@ -8,7 +8,7 @@
        "class_name": "MPackage",
        "full_name": "test_prog",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Test program for model tools.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Test program for model tools.</span>",
        "modifiers": ["package"],
        "license": "Apache-2.0",
        "tags": ["test", "game"]
index ea14337..802b1ec 100644 (file)
        "class_name": "MVirtualTypeDef",
        "full_name": "test_prog$Object$OTHER",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>",
        "modifiers": ["type"],
        "is_intro": true,
        "bound": {
                "name": "nullable Object",
                "synopsis": "Root of everything.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>"
        }
 }
 {
@@ -39,7 +39,7 @@
        "class_name": "MMethodDef",
        "full_name": "test_prog$Object$==",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
        "modifiers": ["intern", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "OTHER",
                                "synopsis": "Used for comparisons.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
@@ -76,7 +76,7 @@
        "class_name": "MMethodDef",
        "full_name": "test_prog$Object$!=",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "OTHER",
                                "synopsis": "Used for comparisons.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Race$_base_strength",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_strength",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_strength=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["protected", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Race$_base_endurance",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_endurance",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_endurance=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["protected", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Race$_base_intelligence",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_intelligence",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Race$base_intelligence=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["protected", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Character$_race",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "Race",
                "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$race",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Race",
                        "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$race=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["protected", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Race",
                                "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Character$_career",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "nullable Career",
                "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$career",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "nullable Career",
                        "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$career=",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "nullable Career",
                                "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "String",
                "synopsis": "Strings (there is no chars...).",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "String",
                        "synopsis": "Strings (there is no chars...).",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
                }
        }
 }
                        "mtype": {
                                "name": "String",
                                "synopsis": "Strings (there is no chars...).",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Bool",
                "synopsis": "Booleans, `true` or `false`.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Bool",
                                "synopsis": "Booleans, `true` or `false`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$total_strengh",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The actual strength of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$total_endurance",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual endurance of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The actual endurance of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$total_intelligence",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The acutal intelligence of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The acutal intelligence of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$max_health",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Maximum health of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Maximum health of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MAttributeDef",
        "full_name": "test_prog$Character$_health",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "is_intro": true,
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$health",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Character$health=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["protected", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MMethodDef",
        "full_name": "test_prog$Weapon$dps",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Damage per second inflicted by this weapon.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Damage per second inflicted by this weapon.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog::combat$Dwarf$Weapon::dps",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">dps</span></span></span></code> are based on the dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">base_endurance</span></span></span></code> (represents weight here)</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">dps</span></span></span></code> are based on the dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">base_endurance</span></span></span></code> (represents weight here)</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog::combat$Character$Combatable::hit_points",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Use character <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> to determines hit_points.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Use character <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> to determines hit_points.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Combatable$attack",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Combatable",
                                "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
                        }
                }, {
                        "is_vararg": false,
                        "mtype": {
                                "name": "Weapon",
                                "synopsis": "Something that can be used to attack someone and inflict damage.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Combatable$direct_attack",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Combatable",
                                "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
                        }
                }, {
                        "is_vararg": false,
                        "mtype": {
                                "name": "Weapon",
                                "synopsis": "Something that can be used to attack someone and inflict damage.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Combatable$defend",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Combatable$is_dead",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is the character still have hit_points?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is the character still have hit_points?</span>",
        "modifiers": ["fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Game$player_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters played by human players.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$MyGame$Game::player_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters played by human players.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$TestGame$Game::player_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters played by human players.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Game$computer_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters players by computer.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$MyGame$Game::computer_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters players by computer.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethodDef",
        "full_name": "test_prog$Game$start_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Start the game.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
        "class_name": "MMethodDef",
        "full_name": "test_prog$MyGame$Game::start_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Start the game.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
        "class_name": "MMethodDef",
        "full_name": "test_prog$Game$pause_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Pause the game.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
        "class_name": "MMethodDef",
        "full_name": "test_prog$MyGame$Game::pause_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Pause the game.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
        "class_name": "MMethodDef",
        "full_name": "test_prog$Game$stop_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Stop the game.</span>",
        "modifiers": ["abstract", "fun"],
        "is_intro": true,
        "msignature": {
        "class_name": "MMethodDef",
        "full_name": "test_prog$MyGame$Game::stop_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Stop the game.</span>",
        "modifiers": ["redef", "fun"],
        "msignature": {
                "arity": 0,
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
index 961fa79..09644aa 100644 (file)
        "class_name": "MVirtualTypeProp",
        "full_name": "test_prog::Object::OTHER",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>",
        "modifiers": ["type"],
        "bound": {
                "name": "nullable Object",
                "synopsis": "Root of everything.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Root of everything.</span>"
        }
 }
 {
@@ -38,7 +38,7 @@
        "class_name": "MMethod",
        "full_name": "test_prog::Object::==",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
        "modifiers": ["intern", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "OTHER",
                                "synopsis": "Used for comparisons.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
@@ -74,7 +74,7 @@
        "class_name": "MMethod",
        "full_name": "test_prog::Object::!=",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "OTHER",
                                "synopsis": "Used for comparisons.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Used for comparisons.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Float",
                                "synopsis": "Some services about Floats.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttribute",
        "full_name": "test_prog::races::Race::_base_strength",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_strength",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_strength=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how strong the race is.</span>",
        "modifiers": ["protected", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttribute",
        "full_name": "test_prog::races::Race::_base_endurance",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_endurance",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_endurance=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Used to represents how the race can absorb damage.</span>",
        "modifiers": ["protected", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttribute",
        "full_name": "test_prog::races::Race::_base_intelligence",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_intelligence",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Race::base_intelligence=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is this race smart?</span>",
        "modifiers": ["protected", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttribute",
        "full_name": "test_prog::character::Character::_race",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "Race",
                "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Character::race",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Race",
                        "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::race=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
        "modifiers": ["protected", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Race",
                                "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MAttribute",
        "full_name": "test_prog::character::Character::_career",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "nullable Career",
                "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Character::career",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "nullable Career",
                        "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::career=",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "nullable Career",
                                "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "String",
                "synopsis": "Strings (there is no chars...).",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "String",
                        "synopsis": "Strings (there is no chars...).",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
                }
        }
 }
                        "mtype": {
                                "name": "String",
                                "synopsis": "Strings (there is no chars...).",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Strings (there is no chars...).</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "Bool",
                "synopsis": "Booleans, `true` or `false`.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
        }
 }
 {
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
                        "mtype": {
                                "name": "Bool",
                                "synopsis": "Booleans, `true` or `false`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MMethod",
        "full_name": "test_prog::Character::total_strengh",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The actual strength of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::total_endurance",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual endurance of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The actual endurance of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::total_intelligence",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The acutal intelligence of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The acutal intelligence of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::max_health",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Maximum health of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Maximum health of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MAttribute",
        "full_name": "test_prog::character::Character::_health",
        "visibility": "private",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["private", "var"],
        "static_mtype": {
                "name": "Int",
                "synopsis": "Some services about Integers.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
        }
 }
 {
        "class_name": "MMethod",
        "full_name": "test_prog::Character::health",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Character::health=",
        "visibility": "protected",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
        "modifiers": ["protected", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": null
        "class_name": "MMethod",
        "full_name": "test_prog::Weapon::dps",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Damage per second inflicted by this weapon.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Damage per second inflicted by this weapon.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Float",
                        "synopsis": "Some services about Floats.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Floats.</span>"
                }
        }
 }
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Combatable::attack",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 2,
                        "mtype": {
                                "name": "Combatable",
                                "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
                        }
                }, {
                        "is_vararg": false,
                        "mtype": {
                                "name": "Weapon",
                                "synopsis": "Something that can be used to attack someone and inflict damage.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Combatable::direct_attack",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 2,
                        "mtype": {
                                "name": "Combatable",
                                "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
                        }
                }, {
                        "is_vararg": false,
                        "mtype": {
                                "name": "Weapon",
                                "synopsis": "Something that can be used to attack someone and inflict damage.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Combatable::defend",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 1,
                        "mtype": {
                                "name": "Int",
                                "synopsis": "Some services about Integers.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                        }
                }],
                "return_mtype": {
                        "name": "Int",
                        "synopsis": "Some services about Integers.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Some services about Integers.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Combatable::is_dead",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Is the character still have hit_points?</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Is the character still have hit_points?</span>",
        "modifiers": ["fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "Bool",
                        "synopsis": "Booleans, `true` or `false`.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Game::player_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters played by human players.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Game::computer_characters",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Characters players by computer.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
                "return_mtype": {
                        "name": "List[Character]",
                        "synopsis": "List of things.",
-                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                }
        }
 }
        "class_name": "MMethod",
        "full_name": "test_prog::Game::start_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Start the game.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
        "class_name": "MMethod",
        "full_name": "test_prog::Game::pause_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Pause the game.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
        "class_name": "MMethod",
        "full_name": "test_prog::Game::stop_game",
        "visibility": "public",
-       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "html_synopsis": "<span class=\"synopsis nitdoc\">Stop the game.</span>",
        "modifiers": ["abstract", "fun"],
        "msignature": {
                "arity": 0,
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
        "static_mtype": {
                "name": "List[Character]",
                "synopsis": "List of things.",
-               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
        }
 }
 {
                        "mtype": {
                                "name": "List[Character]",
                                "synopsis": "List of things.",
-                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                               "html_synopsis": "<span class=\"synopsis nitdoc\">List of things.</span>"
                        }
                }],
                "return_mtype": null
index b002d16..9dc9cfd 100644 (file)
@@ -111,6 +111,10 @@ before_all
 after
 after_all
 example
+
+expect
+ensure
+no_contract
 """
 
        # Efficient set build from `primtives_annotations_list`
index 48f1aa7..43b386f 100644 (file)
@@ -19,3 +19,4 @@ import frontend
 import actors_generation_phase
 import serialization_code_gen_phase
 import explain_assert
+import contracts
diff --git a/src/frontend/test_frontend.nit b/src/frontend/test_frontend.nit
new file mode 100644 (file)
index 0000000..2503e1e
--- /dev/null
@@ -0,0 +1,76 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Testing Model with `nitunit`
+#
+# This module introduce useful tools if you want to test Model with nitunit.
+# It provides an abstract test suite `TestModel` that can load a `Model` from
+# Nit files.
+#
+# See `TestModel::test_src`.
+module test_frontend is test
+
+import frontend
+import frontend::parse_examples
+
+# An abstract NitUnit that loads a `Model` from Nit files.
+#
+# To define a custom test using `TestModel`:
+#
+# ~~~
+# class MyTest
+#      super TestModel
+#      test
+#
+#      redef var test_src = "path/to/files"
+#
+#      fun my_test is test do
+#              assert test_model.mmodules.length == 10
+#      end
+# end
+# ~~~
+abstract class TestModel
+
+       # Path this unit test is executed in
+       var test_path: String = "NIT_TESTING_PATH".environ.dirname is lazy
+
+       # Test program to compile
+       #
+       # Change this source in your test suite.
+       # Default is `$NIT_DIR/tests/test_prog`.
+       #
+       # You can use either a file or a directory.
+       var test_src: String = "NIT_DIR".environ / "tests/test_prog" is lazy
+
+       # ToolContext used for the ModelBuilder
+       var test_context = new ToolContext
+
+       # Model used for tests
+       var test_model = new Model
+
+       # ModelBuilder used for tests
+       var test_builder = new ModelBuilder(test_model, test_context)
+
+       # Mainmodule used for tests
+       var test_main: MModule is noinit
+
+       # Build the test environment
+       fun build_test_env is before do
+               var mmodules = test_builder.parse_full([test_src])
+               test_builder.run_phases
+               test_context.run_global_phases(mmodules)
+               var mainmodule = test_context.make_main_module(mmodules)
+               test_main = mainmodule
+       end
+end
index b2a8f2e..fda1b50 100644 (file)
 module test_code_index is test
 
 import code_index
-import frontend
+import test_frontend
 
 class TestCodeIndex
+       super TestModel
        test
 
        # CodeIndex used in tests
-       var test_index: CodeIndex is noinit
+       var test_index = new CodeIndex(test_context)
 
-       # Initialize test variables
-       #
-       # Must be called before test execution.
-       # FIXME should be before_all
-       fun build_test_env is before do
-               var test_path = "NIT_TESTING_PATH".environ.dirname
-               var test_src = test_path / "../../../tests/test_prog"
-
-               # build model
-               var toolcontext = new ToolContext
-               var model = new Model
-               var modelbuilder = new ModelBuilder(model, toolcontext)
-               var mmodules = modelbuilder.parse_full([test_src])
-               modelbuilder.run_phases
-               toolcontext.run_global_phases(mmodules)
-
-               # create index
-               var index = new CodeIndex(toolcontext)
-               for mmodule in mmodules do
-                       index.index_mentity(mmodule)
+       redef fun build_test_env do
+               super
+               for mmodule in test_model.mmodules do
+                       test_index.index_mentity(mmodule)
                end
-               test_index = index
-               modelbuilder.paths.add test_src
+               test_builder.paths.add test_src
        end
 
        fun test_find1 is test do
index 799c413..7557da7 100644 (file)
@@ -71,6 +71,9 @@ class NaiveInterpreter
        # The main Sys instance
        var mainobj: nullable Instance is noinit
 
+       # Name of all supported functional names
+       var routine_types: Set[String] = new HashSet[String]
+
        init
        do
                if mainmodule.model.get_mclasses_by_name("Bool") != null then
@@ -80,6 +83,15 @@ class NaiveInterpreter
                        init_instance_primitive(self.false_instance)
                end
                self.null_instance = new PrimitiveInstance[nullable Object](mainmodule.model.null_type, null)
+
+               routine_types.add("RoutineRef")
+               for name in ["Proc", "Fun", "ProcRef", "FunRef"] do
+                       # 20 is a magic number = upper limit of the arity of each functional class.
+                       # i.e. Proc0, Proc1, ... Proc19
+                       for i  in [0..20[ do
+                               routine_types.add("{name}{i}")
+                       end
+               end
        end
 
        # Starts the interpreter on the main module of a program
@@ -456,6 +468,22 @@ class NaiveInterpreter
        # Store known methods, used to trace methods as they are reached
        var discover_call_trace: Set[MMethodDef] = new HashSet[MMethodDef]
 
+       # Consumes an iterator of expressions and tries to map each element to
+       # its corresponding Instance.
+       #
+       # If any AExprs doesn't resolve to an Instance, then it returns null.
+       # Otherwise return an array of instances
+       fun aexprs_to_instances(aexprs: Iterator[AExpr]): nullable Array[Instance]
+       do
+               var accumulator = new Array[Instance]
+               for aexpr in aexprs do
+                       var instance = expr(aexpr)
+                       if instance == null then return null
+                       accumulator.push(instance)
+               end
+               return accumulator
+       end
+
        # Evaluate `args` as expressions in the call of `mpropdef` on `recv`.
        # This method is used to manage varargs in signatures and returns the real array
        # of instances to use in the call.
@@ -470,22 +498,15 @@ class NaiveInterpreter
 
                if map == null then
                        assert args.length == msignature.arity else debug("Expected {msignature.arity} args, got {args.length}")
-                       for ne in args do
-                               var e = self.expr(ne)
-                               if e == null then return null
-                               res.add e
-                       end
+                       var rest_args = aexprs_to_instances(args.iterator)
+                       if rest_args == null then return null
+                       res.append(rest_args)
                        return res
                end
 
                # Eval in order of arguments, not parameters
-               var exprs = new Array[Instance].with_capacity(args.length)
-               for ne in args do
-                       var e = self.expr(ne)
-                       if e == null then return null
-                       exprs.add e
-               end
-
+               var exprs = aexprs_to_instances(args.iterator)
+               if exprs == null then return null
 
                # Fill `res` with the result of the evaluation according to the mapping
                for i in [0..msignature.arity[ do
@@ -721,6 +742,10 @@ abstract class Instance
        # Abort if the instance is not a boolean value.
        fun is_true: Bool do abort
 
+       # Return `true` if the instance is null.
+       # Return `false` otherwise.
+       fun is_null: Bool do return mtype isa MNullType
+
        # Return true if `self` IS `o` (using the Nit semantic of is)
        fun eq_is(o: Instance): Bool do return self.is_same_instance(o)
 
@@ -772,6 +797,27 @@ class MutableInstance
        var attributes: Map[MAttribute, Instance] = new HashMap[MAttribute, Instance]
 end
 
+# An instance with the original receiver and callsite (for function reference)
+class CallrefInstance
+       super Instance
+
+       # The original receiver
+       #
+       # ~~~nitish
+       # var a = new A
+       # var f = &a.toto # `a` is the original receiver
+       # ~~~
+       var recv: Instance
+
+       # The original callsite
+       #
+       # ~~~nitish
+       # var a = new A
+       # var f = &a.toto # `toto` is the original callsite
+       # ~~~
+       var callsite: CallSite
+end
+
 # Special instance to handle primitives values (int, bool, etc.)
 # The trick is just to encapsulate the “real” value.
 class PrimitiveInstance[E]
@@ -957,6 +1003,19 @@ redef class AMethPropdef
        do
                var pname = mpropdef.mproperty.name
                var cname = mpropdef.mclassdef.mclass.name
+
+               if pname == "call" and v.routine_types.has(cname) then
+                       var routine = args.shift
+                       assert routine isa CallrefInstance
+                       # Swap the receiver position with the original recv of the call form.
+                       args.unshift routine.recv
+                       var res = v.callsite(routine.callsite, args)
+                       # recover the old args state
+                       args.shift
+                       args.unshift routine
+                       return res
+               end
+
                if pname == "output" then
                        var recv = args.first
                        recv.val.output
@@ -1529,7 +1588,7 @@ redef class AAttrPropdef
                else if mpropdef == mwritepropdef then
                        assert args.length == 2
                        var arg = args[1]
-                       if is_optional and arg.mtype isa MNullType then
+                       if is_optional and arg.is_null then
                                var f = v.new_frame(self, mpropdef, args)
                                arg = evaluate_expr(v, recv, f)
                        end
@@ -1824,7 +1883,7 @@ redef class AForExpr
                for g in n_groups do
                        var col = v.expr(g.n_expr)
                        if col == null then return
-                       if col.mtype isa MNullType then fatal(v, "Receiver is null")
+                       if col.is_null then fatal(v, "Receiver is null")
 
                        var iter = v.callsite(g.method_iterator, [col]).as(not null)
                        iters.add iter
@@ -2185,7 +2244,7 @@ redef class AAsNotnullExpr
        do
                var i = v.expr(self.n_expr)
                if i == null then return null
-               if i.mtype isa MNullType then
+               if i.is_null then
                        fatal(v, "Cast failed")
                end
                return i
@@ -2218,14 +2277,34 @@ redef class ASendExpr
        do
                var recv = v.expr(self.n_expr)
                if recv == null then return null
+
+               # Safe call shortcut if recv is null
+               if is_safe and recv.is_null then
+                       return recv
+               end
+
                var args = v.varargize(callsite.mpropdef, callsite.signaturemap, recv, self.raw_arguments)
                if args == null then return null
-
                var res = v.callsite(callsite, args)
                return res
        end
 end
 
+redef class ACallrefExpr
+       redef fun expr(v)
+       do
+               var recv = v.expr(self.n_expr)
+               if recv == null then return null
+               var mtype = self.mtype
+               assert mtype != null
+               # In case we are in generic class where formal parameter can not
+               # be resolved.
+               var mtype2 = v.unanchor_type(mtype)
+               var inst = new CallrefInstance(mtype2, recv, callsite.as(not null))
+               return inst
+       end
+end
+
 redef class ASendReassignFormExpr
        redef fun stmt(v)
        do
@@ -2314,7 +2393,7 @@ redef class AAttrExpr
        do
                var recv = v.expr(self.n_expr)
                if recv == null then return null
-               if recv.mtype isa MNullType then fatal(v, "Receiver is null")
+               if recv.is_null then fatal(v, "Receiver is null")
                var mproperty = self.mproperty.as(not null)
                return v.read_attribute(mproperty, recv)
        end
@@ -2325,7 +2404,7 @@ redef class AAttrAssignExpr
        do
                var recv = v.expr(self.n_expr)
                if recv == null then return
-               if recv.mtype isa MNullType then fatal(v, "Receiver is null")
+               if recv.is_null then fatal(v, "Receiver is null")
                var i = v.expr(self.n_value)
                if i == null then return
                var mproperty = self.mproperty.as(not null)
@@ -2338,7 +2417,7 @@ redef class AAttrReassignExpr
        do
                var recv = v.expr(self.n_expr)
                if recv == null then return
-               if recv.mtype isa MNullType then fatal(v, "Receiver is null")
+               if recv.is_null then fatal(v, "Receiver is null")
                var value = v.expr(self.n_value)
                if value == null then return
                var mproperty = self.mproperty.as(not null)
@@ -2354,7 +2433,7 @@ redef class AIssetAttrExpr
        do
                var recv = v.expr(self.n_expr)
                if recv == null then return null
-               if recv.mtype isa MNullType then fatal(v, "Receiver is null")
+               if recv.is_null then fatal(v, "Receiver is null")
                var mproperty = self.mproperty.as(not null)
                return v.bool_instance(v.isset_attribute(mproperty, recv))
        end
@@ -2367,6 +2446,13 @@ redef class AVarargExpr
        end
 end
 
+redef class ASafeExpr
+       redef fun expr(v)
+       do
+               return v.expr(self.n_expr)
+       end
+end
+
 redef class ANamedargExpr
        redef fun expr(v)
        do
index 8bdfcb2..169d52e 100644 (file)
@@ -477,7 +477,7 @@ redef class ModelBuilder
                        # Attach homonymous `ini` file to the package
                        var inipath = path.dirname / "{pn}.ini"
                        if inipath.file_exists then
-                               var ini = new ConfigTree(inipath)
+                               var ini = new IniFile.from_file(inipath)
                                mpackage.ini = ini
                        end
                end
@@ -543,7 +543,7 @@ redef class ModelBuilder
                var parent = null
                var inipath = dirpath / "package.ini"
                if inipath.file_exists then
-                       ini = new ConfigTree(inipath)
+                       ini = new IniFile.from_file(inipath)
                end
 
                if ini == null then
@@ -1178,7 +1178,7 @@ redef class MPackage
        # The `ini` file is given as is and might contain invalid or missing information.
        #
        # Some packages, like stand-alone packages or virtual packages have no `ini` file associated.
-       var ini: nullable ConfigTree = null
+       var ini: nullable IniFile = null
 
        # Array of relative source paths excluded according to the `source.exclude` key of the `ini`
        var excludes: nullable Array[String] is lazy do
index f9126e4..7276e78 100644 (file)
@@ -19,7 +19,7 @@ module readme_metrics
 
 import metrics_base
 import model::model_collect
-import markdown
+import markdown2
 
 redef class ToolContext
 
@@ -47,69 +47,21 @@ private class ReadmeMetricsPhase
 end
 
 # A Markdown decorator that collects metrics about a Readme content
-class MetricsDecorator
-       super HTMLDecorator
+class MarkdownMetrics
+       super MdVisitor
 
-       # Count blocks
-       var block_counter = new Counter[String]
+       # Count nodes
+       var nodes_counter = new Counter[String]
 
-       # Count sections
-       var headline_counter = new Counter[Int]
+       # Count heading levels
+       var headings_counter = new Counter[Int]
 
-       redef fun add_ruler(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_headline(v, block) do
-               block_counter.inc block.class_name
-               headline_counter.inc block.depth
-               super
-       end
-
-       redef fun add_paragraph(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_code(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_blockquote(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_unorderedlist(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_orderedlist(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_listitem(v, block) do
-               block_counter.inc block.class_name
-               super
-       end
-
-       redef fun add_image(v, link, name, comment) do
-               block_counter.inc "Image"
-               super
-       end
-
-       redef fun add_link(v, link, name, comment) do
-               block_counter.inc "Link"
-               super
-       end
-
-       redef fun add_span_code(v, text, from, to) do
-               block_counter.inc "SpanCode"
-               super
+       redef fun visit(node) do
+               nodes_counter.inc node.class_name
+               if node isa MdHeading then
+                       headings_counter.inc node.level
+               end
+               node.visit_all self
        end
 end
 
@@ -206,8 +158,16 @@ class ReadmeMetric
                self["has_readme"] = 1
                self["md_lines"] = md_lines.length
 
-               collect_sections_metrics
-               collect_blocs_metrics
+               var parser = new MdParser
+               var node = parser.parse(md_lines.join("\n"))
+               var v = new MarkdownMetrics
+               v.enter_visit(node)
+               for md_node, value in v.nodes_counter do
+                       self[md_node] = value
+               end
+               for level, value in v.headings_counter do
+                       self["HL {level}"] = value
+               end
        end
 
        # Path to the package
@@ -242,29 +202,4 @@ class ReadmeMetric
                if path == null then return new Array[String]
                return path.to_path.read_lines
        end
-
-       # Markdown decorator used to visit Markdown content
-       var md_decorator: MetricsDecorator is lazy do
-               var md_decorator = new MetricsDecorator
-               var md_proc = new MarkdownProcessor
-               md_proc.decorator = md_decorator
-               md_proc.process(md_lines.join("\n"))
-               return md_decorator
-       end
-
-       # Collect metrics related to section headings
-       fun collect_sections_metrics do
-               self["nb_section"] = md_decorator.headline_counter.sum
-               for lvl, count in md_decorator.headline_counter do
-                       self["HL {lvl}"] = count
-               end
-       end
-
-       # Collect metrics related to Markdown blocks
-       fun collect_blocs_metrics do
-               self["md_blocks"] = md_decorator.block_counter.sum
-               for block, count in md_decorator.block_counter do
-                       self[block] = count
-               end
-       end
 end
index a410236..ab71dce 100644 (file)
@@ -185,12 +185,19 @@ class MModule
                self.in_importation = model.mmodule_importation_hierarchy.add_node(self)
        end
 
-       # Register the imported modules (ie "import some_module")
+       # Register the imported modules (ie "import some_module") and packages importation graph
+       # In the same time it register the imported package
        # The visibility must be set with `set_visibility_for`.
        fun set_imported_mmodules(imported_mmodules: Array[MModule])
        do
                for m in imported_mmodules do
                        self.model.mmodule_importation_hierarchy.add_edge(self, m)
+                       var actual_mpackage = self.mpackage
+                       var imported_mpackage = m.mpackage
+                       if actual_mpackage != null and imported_mpackage != null then
+                               # Register the imported package
+                               self.model.mpackage_importation_graph.add_arc(actual_mpackage, imported_mpackage)
+                       end
                end
        end
 
index c86bf96..e3fa3fd 100644 (file)
@@ -204,19 +204,37 @@ redef class MModule
        do
                var res = self.flatten_mclass_hierarchy_cache
                if res != null then return res
-               res = new POSet[MClass]
+                self.flatten_mclass_hierarchy_cache = new POSet[MClass]
                for m in self.in_importation.greaters do
                        for cd in m.mclassdefs do
-                               var c = cd.mclass
-                               res.add_node(c)
-                               for s in cd.supertypes do
-                                       res.add_edge(c, s.mclass)
-                               end
+                                unsafe_update_hierarchy_cache(cd)
                        end
                end
-               self.flatten_mclass_hierarchy_cache = res
-               return res
-       end
+               return self.flatten_mclass_hierarchy_cache.as(not null)
+       end
+
+        # Adds another class definition in the modue.
+        # Updates the class hierarchy cache.
+        fun add_mclassdef(mclassdef: MClassDef)
+        do
+                self.mclassdefs.add(mclassdef)
+                if self.flatten_mclass_hierarchy_cache != null then
+                        unsafe_update_hierarchy_cache(mclassdef)
+                end
+        end
+
+        # Adds a class definition inside `flatten_mclass_hierarchy_cache` without
+        # null check. The caller must have initialized the cache.
+        protected fun unsafe_update_hierarchy_cache(mclassdef: MClassDef)
+        do
+                var hierarchy = self.flatten_mclass_hierarchy_cache.as(not null)
+                # Update the cache
+                var c = mclassdef.mclass
+                hierarchy.add_node(c)
+                for s in mclassdef.supertypes do
+                        hierarchy.add_edge(c, s.mclass)
+                end
+        end
 
        # Sort a given array of classes using the linearization order of the module
        # The most general is first, the most specific is last
@@ -651,7 +669,7 @@ class MClassDef
        init
        do
                self.mclass = bound_mtype.mclass
-               mmodule.mclassdefs.add(self)
+               mmodule.add_mclassdef(self)
                mclass.mclassdefs.add(self)
                if mclass.intro_mmodule == mmodule then
                        assert not isset mclass._intro
index 1cdde49..f014ac9 100644 (file)
@@ -19,6 +19,7 @@ import model_base
 private import more_collections
 import poset
 import mdoc
+import graph::digraph
 
 # A Nit package, that encompass a product
 class MPackage
@@ -47,6 +48,8 @@ class MPackage
        init
        do
                model.mpackages.add(self)
+               # Add `self` to the importation graph
+               model.mpackage_importation_graph.add_vertex(self)
                model.mpackage_by_name.add_one(name, self)
        end
 
@@ -177,6 +180,11 @@ class MGroup
 end
 
 redef class Model
+
+       # Full package importation graph
+       # Each package is in relation with itself
+       var mpackage_importation_graph = new HashDigraph[MPackage]
+
        # packages of the model
        var mpackages = new Array[MPackage]
 
index c8a7f3b..35e210e 100644 (file)
@@ -42,6 +42,17 @@ redef class ModelBuilder
        # Public clients need to use `mpropdef2node` to access stuff.
        private var mpropdef2npropdef = new HashMap[MPropDef, APropdef]
 
+       # Associate a `npropdef` with its `mpropdef`
+       #
+       # Be careful, this method is unsafe, no checking is done when it's used.
+       # The safe way to add method it's to use the `build_property`
+       #
+       # See `mpropdef2npropdef`
+       fun unsafe_add_mpropdef2npropdef(mpropdef: MPropDef,npropdef: APropdef)
+       do
+               mpropdef2npropdef[mpropdef] = npropdef
+       end
+
        # Retrieve the associated AST node of a mpropertydef.
        # This method is used to associate model entity with syntactic entities.
        #
index 2a0a4a5..9dd3351 100644 (file)
@@ -340,8 +340,8 @@ redef class Catalog
                end
                res.add_list(ts2, ", ", ", ")
 
-               if deps.has(mpackage) then
-                       var reqs = deps[mpackage].greaters.to_a
+               if deps.vertices.has(mpackage) then
+                       var reqs = deps.get_all_successors(mpackage)
                        reqs.remove(mpackage)
                        alpha_comparator.sort(reqs)
                        res.add "<h3>Requirements</h3>\n"
@@ -350,7 +350,7 @@ redef class Catalog
                        else
                                var list = new Array[String]
                                for r in reqs do
-                                       var direct = deps.has_direct_edge(mpackage, r)
+                                       var direct = deps.has_arc(mpackage, r)
                                        var s = "<a href=\"{r}.html\">"
                                        if direct then s += "<strong>"
                                        s += r.to_s
@@ -361,7 +361,7 @@ redef class Catalog
                                res.add_list(list, ", ", " and ")
                        end
 
-                       reqs = deps[mpackage].smallers.to_a
+                       reqs = deps.get_all_predecessors(mpackage)
                        reqs.remove(mpackage)
                        alpha_comparator.sort(reqs)
                        res.add "<h3>Clients</h3>\n"
@@ -370,7 +370,7 @@ redef class Catalog
                        else
                                var list = new Array[String]
                                for r in reqs do
-                                       var direct = deps.has_direct_edge(r, mpackage)
+                                       var direct = deps.has_arc(r, mpackage)
                                        var s = "<a href=\"{r}.html\">"
                                        if direct then s += "<strong>"
                                        s += r.to_s
@@ -480,7 +480,7 @@ redef class Catalog
                res.add "<th data-field=\"name\" data-sortable=\"true\">name</th>\n"
                res.add "<th data-field=\"maint\" data-sortable=\"true\">maint</th>\n"
                res.add "<th data-field=\"contrib\" data-sortable=\"true\">contrib</th>\n"
-               if deps.not_empty then
+               if deps.vertices.not_empty then
                        res.add "<th data-field=\"reqs\" data-sortable=\"true\">reqs</th>\n"
                        res.add "<th data-field=\"dreqs\" data-sortable=\"true\">direct<br>reqs</th>\n"
                        res.add "<th data-field=\"cli\" data-sortable=\"true\">clients</th>\n"
@@ -503,11 +503,11 @@ redef class Catalog
                        if p.metadata.maintainers.not_empty then maint = p.metadata.maintainers.first.name.html_escape
                        res.add "<td>{maint}</td>"
                        res.add "<td>{p.metadata.contributors.length}</td>"
-                       if deps.not_empty then
-                               res.add "<td>{deps[p].greaters.length-1}</td>"
-                               res.add "<td>{deps[p].direct_greaters.length}</td>"
-                               res.add "<td>{deps[p].smallers.length-1}</td>"
-                               res.add "<td>{deps[p].direct_smallers.length}</td>"
+                       if deps.vertices.not_empty then
+                               res.add "<td>{deps.get_all_successors(p).length-1}</td>"
+                               res.add "<td>{deps.successors(p).length}</td>"
+                               res.add "<td>{deps.get_all_predecessors(p).length-1}</td>"
+                               res.add "<td>{deps.predecessors(p).length}</td>"
                        end
                        res.add "<td>{mmodules[p]}</td>"
                        res.add "<td>{mclasses[p]}</td>"
@@ -593,29 +593,13 @@ if opt_no_parse.value then
 else
        mmodules = modelbuilder.parse_full(args)
 end
-var mpackages = new Set[MPackage]
-for m in mmodules do
-       var p = m.mpackage
-       if p != null then mpackages.add p
-end
+var mpackages = modelbuilder.model.mpackage_importation_graph.vertices
 
 # Scan packages and compute information
-for p in model.mpackages do
+for p in mpackages do
        var g = p.root
        assert g != null
        modelbuilder.scan_group(g)
-
-       # Load the module to process importation information
-       if opt_no_parse.value then continue
-
-       catalog.deps.add_node(p)
-       for gg in p.mgroups do for m in gg.mmodules do
-               for im in m.in_importation.direct_greaters do
-                       var ip = im.mpackage
-                       if ip == null or ip == p then continue
-                       catalog.deps.add_edge(p, ip)
-               end
-       end
 end
 
 if not opt_no_git.value then for p in mpackages do
@@ -758,11 +742,11 @@ index.add """
 index.add "<h2>Highlighted Packages</h2>\n"
 index.add catalog.list_best(catalog.score)
 
-if catalog.deps.not_empty then
+if catalog.deps.vertices.not_empty then
        index.add "<h2>Most Required</h2>\n"
        var reqs = new Counter[MPackage]
        for p in mpackages do
-               reqs[p] = catalog.deps[p].smallers.length - 1
+               reqs[p] = catalog.deps.get_all_successors(p).length - 1
        end
        index.add catalog.list_best(reqs)
 end
index 65227b3..3c3539f 100644 (file)
@@ -233,15 +233,6 @@ redef class Catalog
                        var g = p.root
                        assert g != null
                        modelbuilder.scan_group(g)
-
-                       deps.add_node(p)
-                       for gg in p.mgroups do for m in gg.mmodules do
-                               for im in m.in_importation.direct_greaters do
-                                       var ip = im.mpackage
-                                       if ip == null or ip == p then continue
-                                       deps.add_edge(p, ip)
-                               end
-                       end
                end
                # Build the catalog
                for mpackage in mpackages do
index a81ded9..7f4c5f2 100644 (file)
@@ -253,14 +253,14 @@ redef class MPackage
                var ini_path = ini_path
                if ini_path == null then return
 
-               var ini = new ConfigTree(ini_path)
+               var ini = new IniFile.from_file(ini_path)
 
-               ini.check_key(toolcontext, self, "package.name", name)
-               ini.check_key(toolcontext, self, "package.desc")
-               ini.check_key(toolcontext, self, "package.tags")
+               ini.check_key(ini_path, toolcontext, self, "package.name", name)
+               ini.check_key(ini_path, toolcontext, self, "package.desc")
+               ini.check_key(ini_path, toolcontext, self, "package.tags")
 
                # FIXME since `git reflog --follow` seems bugged
-               ini.check_key(toolcontext, self, "package.maintainer")
+               ini.check_key(ini_path, toolcontext, self, "package.maintainer")
                # var maint = mpackage.maintainer
                # if maint != null then
                        # ini.check_key(toolcontext, self, "package.maintainer", maint)
@@ -272,24 +272,24 @@ redef class MPackage
                        # ini.check_key(toolcontext, self, "package.more_contributors", contribs.join(", "))
                # end
 
-               ini.check_key(toolcontext, self, "package.license", license)
-               ini.check_key(toolcontext, self, "upstream.browse", browse_url)
-               ini.check_key(toolcontext, self, "upstream.git", git_url)
-               ini.check_key(toolcontext, self, "upstream.git.directory", git_dir)
-               ini.check_key(toolcontext, self, "upstream.homepage", homepage_url)
-               ini.check_key(toolcontext, self, "upstream.issues", issues_url)
+               ini.check_key(ini_path, toolcontext, self, "package.license", license)
+               ini.check_key(ini_path, toolcontext, self, "upstream.browse", browse_url)
+               ini.check_key(ini_path, toolcontext, self, "upstream.git", git_url)
+               ini.check_key(ini_path, toolcontext, self, "upstream.git.directory", git_dir)
+               ini.check_key(ini_path, toolcontext, self, "upstream.homepage", homepage_url)
+               ini.check_key(ini_path, toolcontext, self, "upstream.issues", issues_url)
 
-               for key in ini.to_map.keys do
+               for key in ini.flatten.keys do
                        if not allowed_ini_keys.has(key) then
                                toolcontext.warning(location, "unknown-ini-key",
-                                       "Warning: ignoring unknown `{key}` key in `{ini.ini_file}`")
+                                       "Warning: ignoring unknown `{key}` key in `{ini_path}`")
                        end
                end
        end
 
        private fun gen_ini: String do
                var ini_path = self.ini_path.as(not null)
-               var ini = new ConfigTree(ini_path)
+               var ini = new IniFile.from_file(ini_path)
 
                ini.update_value("package.name", name)
                ini.update_value("package.desc", "")
@@ -304,7 +304,7 @@ redef class MPackage
                ini.update_value("upstream.homepage", homepage_url)
                ini.update_value("upstream.issues", issues_url)
 
-               ini.save
+               ini.write_to_file(ini_path)
                return ini_path
        end
 
@@ -528,8 +528,8 @@ redef class MModule
        end
 end
 
-redef class ConfigTree
-       private fun check_key(toolcontext: ToolContext, mpackage: MPackage, key: String, value: nullable String) do
+redef class IniFile
+       private fun check_key(ini_file: String, toolcontext: ToolContext, mpackage: MPackage, key: String, value: nullable String) do
                if not has_key(key) then
                        toolcontext.warning(mpackage.location, "missing-ini-key",
                                "Warning: missing `{key}` key in `{ini_file}`")
index 1e9de9c..0c6ed5f 100644 (file)
@@ -78,7 +78,7 @@ class CommandInstall
                                exit 1
                        end
 
-                       var ini = new ConfigTree(ini_path)
+                       var ini = new IniFile.from_file(ini_path)
                        var import_line = ini["package.import"]
                        if import_line == null then
                                print_error "The local `package.ini` declares no external dependencies."
@@ -135,7 +135,7 @@ class CommandInstall
                                print ini_path.to_path.read_all
                        end
 
-                       var ini = new ConfigTree(ini_path)
+                       var ini = new IniFile.from_file(ini_path)
                        var git_repo = ini["upstream.git"]
                        if git_repo == null then
                                print_error "Package description invalid, or it does not declare a Git repository"
@@ -195,7 +195,7 @@ class CommandInstall
                end
 
                # Recursive install
-               var ini = new ConfigTree(target_dir/"package.ini")
+               var ini = new IniFile.from_file(target_dir/"package.ini")
                var import_line = ini["package.import"]
                if import_line != null then
                        install_packages import_line
@@ -320,7 +320,7 @@ class CommandList
                for file in files do
                        var ini_path = nitpm_lib_dir / file / "package.ini"
                        if verbose then print "- Reading ini file at {ini_path}"
-                       var ini = new ConfigTree(ini_path)
+                       var ini = new IniFile.from_file(ini_path)
                        var tags = ini["package.tags"]
 
                        name_to_desc[file] = tags
index fe8fb7b..125c514 100644 (file)
@@ -84,19 +84,23 @@ for a in args do
        end
        # Try to load the file as a markdown document
        var mdoc = modelbuilder.load_markdown(a)
-       page.add modelbuilder.test_mdoc(mdoc)
+       var ts = modelbuilder.test_mdoc(mdoc)
+       if not ts.children.is_empty then page.add ts
 end
 
 for a in module_files do
        var g = modelbuilder.identify_group(a)
        if g == null then continue
-       page.add modelbuilder.test_group(g)
+       var ts = modelbuilder.test_group(g)
+       if not ts.children.is_empty then page.add ts
 end
 
 for m in mmodules do
-       page.add modelbuilder.test_markdown(m)
-       var ts = modelbuilder.test_unit(m)
-       if ts != null then page.add ts
+       var ts
+       ts = modelbuilder.test_markdown(m)
+       if not ts.children.is_empty then page.add ts
+       ts = modelbuilder.test_unit(m)
+       if ts != null and not ts.children.is_empty then page.add ts
 end
 
 var file = toolcontext.opt_output.value
index 9e9d54f..8baf1e8 100644 (file)
@@ -99,7 +99,7 @@ private class NitwebPhase
                app.use("/oauth", new GithubOAuthCallBack(config.github_client_id, config.github_client_secret))
                app.use("/logout", new GithubLogout)
                app.use("/*", new StaticHandler(toolcontext.share_dir / "nitweb", "index.html"))
-               app.use_after("/*", new ConsoleLog)
+               app.use_after("/*", new PopLogger(info_level))
 
                app.listen(config.app_host, config.app_port)
        end
@@ -115,15 +115,6 @@ private class NitwebPhase
                        var g = p.root
                        assert g != null
                        modelbuilder.scan_group(g)
-
-                       catalog.deps.add_node(p)
-                       for gg in p.mgroups do for m in gg.mmodules do
-                               for im in m.in_importation.direct_greaters do
-                                       var ip = im.mpackage
-                                       if ip == null or ip == p then continue
-                                       catalog.deps.add_edge(p, ip)
-                               end
-                       end
                end
                # Build the catalog
                for mpackage in mpackages do
index 311580a..7162e43 100644 (file)
@@ -121,20 +121,11 @@ end
 redef class Catalog
        # Build the catalog for Nitx
        private fun build_catalog(model: Model, filter: nullable ModelFilter) do
-               # Compute the poset
+               # Scan all modules of collected packages
                for p in model.collect_mpackages(filter) do
                        var g = p.root
                        assert g != null
                        modelbuilder.scan_group(g)
-
-                       deps.add_node(p)
-                       for gg in p.mgroups do for m in gg.mmodules do
-                               for im in m.in_importation.direct_greaters do
-                                       var ip = im.mpackage
-                                       if ip == null or ip == p then continue
-                                       deps.add_edge(p, ip)
-                               end
-                       end
                end
                # Build the catalog
                for mpackage in model.collect_mpackages(filter) do
index f8431a0..efad425 100644 (file)
@@ -1170,7 +1170,7 @@ redef class TBang
     end
 end
 
-redef class TAt
+redef class TQuest
     redef fun parser_index: Int
     do
        return 97
@@ -1182,7 +1182,7 @@ redef class TAt
     end
 end
 
-redef class TSemi
+redef class TAt
     redef fun parser_index: Int
     do
        return 98
@@ -1194,7 +1194,7 @@ redef class TSemi
     end
 end
 
-redef class TClassid
+redef class TSemi
     redef fun parser_index: Int
     do
        return 99
@@ -1206,7 +1206,7 @@ redef class TClassid
     end
 end
 
-redef class TId
+redef class TClassid
     redef fun parser_index: Int
     do
        return 100
@@ -1218,7 +1218,7 @@ redef class TId
     end
 end
 
-redef class TAttrid
+redef class TId
     redef fun parser_index: Int
     do
        return 101
@@ -1230,7 +1230,7 @@ redef class TAttrid
     end
 end
 
-redef class TInteger
+redef class TAttrid
     redef fun parser_index: Int
     do
        return 102
@@ -1242,7 +1242,7 @@ redef class TInteger
     end
 end
 
-redef class TFloat
+redef class TInteger
     redef fun parser_index: Int
     do
        return 103
@@ -1254,7 +1254,7 @@ redef class TFloat
     end
 end
 
-redef class TString
+redef class TFloat
     redef fun parser_index: Int
     do
        return 104
@@ -1266,7 +1266,7 @@ redef class TString
     end
 end
 
-redef class TStartString
+redef class TString
     redef fun parser_index: Int
     do
        return 105
@@ -1278,7 +1278,7 @@ redef class TStartString
     end
 end
 
-redef class TMidString
+redef class TStartString
     redef fun parser_index: Int
     do
        return 106
@@ -1290,7 +1290,7 @@ redef class TMidString
     end
 end
 
-redef class TEndString
+redef class TMidString
     redef fun parser_index: Int
     do
        return 107
@@ -1302,7 +1302,7 @@ redef class TEndString
     end
 end
 
-redef class TChar
+redef class TEndString
     redef fun parser_index: Int
     do
        return 108
@@ -1314,7 +1314,7 @@ redef class TChar
     end
 end
 
-redef class TBadString
+redef class TChar
     redef fun parser_index: Int
     do
        return 109
@@ -1326,7 +1326,7 @@ redef class TBadString
     end
 end
 
-redef class TBadTString
+redef class TBadString
     redef fun parser_index: Int
     do
        return 110
@@ -1338,7 +1338,7 @@ redef class TBadTString
     end
 end
 
-redef class TBadChar
+redef class TBadTString
     redef fun parser_index: Int
     do
        return 111
@@ -1350,7 +1350,7 @@ redef class TBadChar
     end
 end
 
-redef class TExternCodeSegment
+redef class TBadChar
     redef fun parser_index: Int
     do
        return 112
@@ -1362,7 +1362,7 @@ redef class TExternCodeSegment
     end
 end
 
-redef class TBadExtern
+redef class TExternCodeSegment
     redef fun parser_index: Int
     do
        return 113
@@ -1374,11 +1374,23 @@ redef class TBadExtern
     end
 end
 
+redef class TBadExtern
+    redef fun parser_index: Int
+    do
+       return 114
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
 
 redef class EOF
     redef fun parser_index: Int
     do
-       return 114
+       return 115
     end
 end
 
@@ -1677,54 +1689,57 @@ redef class Lexer
                        return new TBang.init_tk(location)
                end
                if accept_token == 98 then
-                       return new TAt.init_tk(location)
+                       return new TQuest.init_tk(location)
                end
                if accept_token == 99 then
-                       return new TSemi.init_tk(location)
+                       return new TAt.init_tk(location)
                end
                if accept_token == 100 then
-                       return new TClassid.init_tk(location)
+                       return new TSemi.init_tk(location)
                end
                if accept_token == 101 then
-                       return new TId.init_tk(location)
+                       return new TClassid.init_tk(location)
                end
                if accept_token == 102 then
-                       return new TAttrid.init_tk(location)
+                       return new TId.init_tk(location)
                end
                if accept_token == 103 then
-                       return new TInteger.init_tk(location)
+                       return new TAttrid.init_tk(location)
                end
                if accept_token == 104 then
-                       return new TFloat.init_tk(location)
+                       return new TInteger.init_tk(location)
                end
                if accept_token == 105 then
-                       return new TString.init_tk(location)
+                       return new TFloat.init_tk(location)
                end
                if accept_token == 106 then
-                       return new TStartString.init_tk(location)
+                       return new TString.init_tk(location)
                end
                if accept_token == 107 then
-                       return new TMidString.init_tk(location)
+                       return new TStartString.init_tk(location)
                end
                if accept_token == 108 then
-                       return new TEndString.init_tk(location)
+                       return new TMidString.init_tk(location)
                end
                if accept_token == 109 then
-                       return new TChar.init_tk(location)
+                       return new TEndString.init_tk(location)
                end
                if accept_token == 110 then
-                       return new TBadString.init_tk(location)
+                       return new TChar.init_tk(location)
                end
                if accept_token == 111 then
-                       return new TBadTString.init_tk(location)
+                       return new TBadString.init_tk(location)
                end
                if accept_token == 112 then
-                       return new TBadChar.init_tk(location)
+                       return new TBadTString.init_tk(location)
                end
                if accept_token == 113 then
-                       return new TExternCodeSegment.init_tk(location)
+                       return new TBadChar.init_tk(location)
                end
                if accept_token == 114 then
+                       return new TExternCodeSegment.init_tk(location)
+               end
+               if accept_token == 115 then
                        return new TBadExtern.init_tk(location)
                end
                abort # unknown token index `accept_token`
index 1931792..603133c 100644 (file)
@@ -204,6 +204,7 @@ ge = '>=';
 gg = '>>';
 starship = '<=>';
 bang='!';
+quest='?';
 at='@';
 semi=';';
 
@@ -317,12 +318,16 @@ propdef~toplevel {-> propdef}
        ;
 annotation_withend~nonull {-> annotations?}
        = {oneliner} kwis annotation_list {-> New annotations(kwis, Null, Null, [annotation_list.annotation], Null, Null)}
-       | {more} kwis n1 line_annotation+ kwend {-> New annotations(kwis, Null, Null, [line_annotation.annotation], Null, kwend) }
+       | {more} kwis n1 line_annotations kwend {-> New annotations(kwis, Null, Null, [line_annotations.annotation], Null, kwend) }
 !nonull        | {null} {-> Null}
        ;
 annotation_noend {-> annotations}
        = {oneliner} kwis annotation_list {-> New annotations(kwis, Null, Null, [annotation_list.annotation], Null, Null)}
-       | {more} kwis n1 line_annotation+ {-> New annotations(kwis, Null, Null, [line_annotation.annotation], Null, Null) }
+       | {more} kwis n1 line_annotations {-> New annotations(kwis, Null, Null, [line_annotations.annotation], Null, Null) }
+       ;
+
+line_annotations {-> annotation*}
+       = {some} line_annotation* n? {-> [line_annotation.annotation] }
        ;
 
 visibility
@@ -638,6 +643,7 @@ expr_new~nopar~nobra {-> expr}
        = expr_atom~nopar~nobra {-> expr_atom~nopar~nobra.expr}
        | {new} kwnew no type_atom~nobra_nopar args {-> New expr.new(kwnew, type_atom~nobra_nopar.type, Null, args.exprs)}
        | {isset_attr} kwisset recv~nopar~nobra qualified_o attrid {-> New expr.isset_attr(kwisset, recv~nopar~nobra.expr, attrid)}
+       | {callref} amp recv~nopar~nobra qid args {-> New expr.callref(amp, recv~nopar~nobra.expr, qid, args.exprs)}
        ;
 
 expr_atom~nopar~nobra {-> expr}
@@ -669,6 +675,8 @@ expr_single~nopar~nobra {-> expr}
        | {char} char annotations_o {-> New expr.char(char, annotations_o.annotations)}
        | {string} string annotations_o {-> New expr.string(string, annotations_o.annotations)}
        | {superstring} superstring  {-> superstring.expr}
+       | {lambdan} kwmeth signature kwdo no stmts [n2]:no kwend {-> New expr.lambda(kwmeth, signature, kwdo, stmts.expr)}
+       | {lambda0} kwmeth signature kwdo no endblock {-> New expr.lambda(kwmeth, signature, kwdo, endblock.expr)}
 !nopar | {par} expr_par {-> expr_par.expr}
 // !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar),
 !nobra!nopar   | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra annotations_o {-> New expr.crange(obra, expr, dotdot, expr2.expr, cbra, annotations_o.annotations)}
@@ -792,6 +800,7 @@ atid~forclass {-> atid}
 
 recv~nopar~nobra {-> expr}
        = expr_atom~nopar~nobra dot no {-> expr_atom~nopar~nobra.expr}
+       | {safe} expr_atom~nopar~nobra quest dot no {-> New expr.safe(expr_atom~nopar~nobra.expr, quest)}
        | {implicit} {-> New expr.implicit_self()}
        ;
 
@@ -1019,6 +1028,7 @@ expr      = {block} expr* kwend?
        | {attr_assign} expr [id]:attrid assign [value]:expr
        | {attr_reassign} expr [id]:attrid assign_op [value]:expr
        | {call} expr qid [args]:exprs
+       | {callref} amp expr qid [args]:exprs
        | {call_assign} expr qid [args]:exprs assign [value]:expr
        | {call_reassign} expr qid [args]:exprs assign_op [value]:expr
        | {super} qualified? kwsuper [args]:exprs
@@ -1046,6 +1056,7 @@ expr      = {block} expr* kwend?
        | {mid_string} [string]:mid_string
        | {end_string} [string]:end_string
        | {superstring} [exprs]:expr* annotations?
+       | {lambda} kwmeth signature kwdo expr
        | {par} opar expr cpar annotations?
         | {as_cast} expr kwas opar? type cpar?
         | {as_notnull} expr kwas opar? kwnot kwnull cpar?
@@ -1053,6 +1064,7 @@ expr      = {block} expr* kwend?
        | {debug_type} kwdebug kwtype expr type
        | {vararg} expr dotdotdot
        | {namedarg} id assign expr
+       | {safe} expr quest
        | {type} type
        | {methid} expr [id]:methid
        | {at} annotations
index bfa38a3..dfc4d93 100644 (file)
@@ -9,7 +9,7 @@ private import tables
 redef class Parser
        redef fun build_reduce_table
        do
-               var reduce_table = new Array[ReduceAction].with_capacity(1116)
+               var reduce_table = new Array[ReduceAction].with_capacity(1788)
                reduce_table.add new ReduceAction0(0)
                reduce_table.add new ReduceAction1(0)
                reduce_table.add new ReduceAction2(0)
@@ -27,1105 +27,1777 @@ redef class Parser
                reduce_table.add new ReduceAction14(0)
                reduce_table.add new ReduceAction15(0)
                reduce_table.add new ReduceAction16(1)
-               reduce_table.add new ReduceAction17(2)
-               reduce_table.add new ReduceAction18(2)
-               reduce_table.add new ReduceAction19(3)
-               reduce_table.add new ReduceAction20(3)
-               reduce_table.add new ReduceAction21(4)
-               reduce_table.add new ReduceAction22(4)
-               reduce_table.add new ReduceAction23(4)
-               reduce_table.add new ReduceAction24(5)
-               reduce_table.add new ReduceAction24(5)
-               reduce_table.add new ReduceAction26(6)
-               reduce_table.add new ReduceAction27(6)
-               reduce_table.add new ReduceAction28(6)
-               reduce_table.add new ReduceAction29(6)
-               reduce_table.add new ReduceAction22(7)
-               reduce_table.add new ReduceAction31(7)
-               reduce_table.add new ReduceAction32(8)
-               reduce_table.add new ReduceAction33(8)
-               reduce_table.add new ReduceAction34(8)
-               reduce_table.add new ReduceAction35(8)
-               reduce_table.add new ReduceAction36(8)
-               reduce_table.add new ReduceAction37(8)
-               reduce_table.add new ReduceAction38(9)
-               reduce_table.add new ReduceAction39(9)
-               reduce_table.add new ReduceAction40(9)
-               reduce_table.add new ReduceAction41(10)
-               reduce_table.add new ReduceAction42(11)
-               reduce_table.add new ReduceAction43(11)
-               reduce_table.add new ReduceAction44(12)
-               reduce_table.add new ReduceAction45(13)
-               reduce_table.add new ReduceAction46(13)
-               reduce_table.add new ReduceAction47(13)
-               reduce_table.add new ReduceAction48(14)
+               reduce_table.add new ReduceAction17(1)
+               reduce_table.add new ReduceAction18(1)
+               reduce_table.add new ReduceAction19(1)
+               reduce_table.add new ReduceAction20(1)
+               reduce_table.add new ReduceAction21(1)
+               reduce_table.add new ReduceAction22(1)
+               reduce_table.add new ReduceAction23(1)
+               reduce_table.add new ReduceAction24(1)
+               reduce_table.add new ReduceAction25(1)
+               reduce_table.add new ReduceAction26(2)
+               reduce_table.add new ReduceAction27(2)
+               reduce_table.add new ReduceAction28(2)
+               reduce_table.add new ReduceAction29(2)
+               reduce_table.add new ReduceAction30(2)
+               reduce_table.add new ReduceAction31(2)
+               reduce_table.add new ReduceAction32(2)
+               reduce_table.add new ReduceAction33(2)
+               reduce_table.add new ReduceAction34(2)
+               reduce_table.add new ReduceAction35(2)
+               reduce_table.add new ReduceAction36(2)
+               reduce_table.add new ReduceAction37(2)
+               reduce_table.add new ReduceAction38(2)
+               reduce_table.add new ReduceAction39(2)
+               reduce_table.add new ReduceAction40(2)
+               reduce_table.add new ReduceAction41(2)
+               reduce_table.add new ReduceAction42(2)
+               reduce_table.add new ReduceAction43(2)
+               reduce_table.add new ReduceAction44(2)
+               reduce_table.add new ReduceAction45(2)
+               reduce_table.add new ReduceAction46(3)
+               reduce_table.add new ReduceAction47(3)
+               reduce_table.add new ReduceAction48(4)
+               reduce_table.add new ReduceAction49(4)
+               reduce_table.add new ReduceAction50(4)
+               reduce_table.add new ReduceAction51(5)
+               reduce_table.add new ReduceAction52(5)
+               reduce_table.add new ReduceAction53(5)
+               reduce_table.add new ReduceAction54(6)
+               reduce_table.add new ReduceAction55(6)
+               reduce_table.add new ReduceAction56(6)
+               reduce_table.add new ReduceAction57(6)
+               reduce_table.add new ReduceAction58(6)
+               reduce_table.add new ReduceAction59(6)
+               reduce_table.add new ReduceAction60(6)
+               reduce_table.add new ReduceAction61(6)
+               reduce_table.add new ReduceAction62(6)
+               reduce_table.add new ReduceAction63(6)
+               reduce_table.add new ReduceAction64(6)
+               reduce_table.add new ReduceAction65(6)
+               reduce_table.add new ReduceAction66(6)
+               reduce_table.add new ReduceAction67(6)
+               reduce_table.add new ReduceAction68(6)
+               reduce_table.add new ReduceAction69(6)
+               reduce_table.add new ReduceAction70(6)
+               reduce_table.add new ReduceAction71(6)
+               reduce_table.add new ReduceAction72(6)
+               reduce_table.add new ReduceAction73(6)
+               reduce_table.add new ReduceAction74(6)
+               reduce_table.add new ReduceAction75(6)
+               reduce_table.add new ReduceAction76(6)
+               reduce_table.add new ReduceAction77(6)
+               reduce_table.add new ReduceAction78(6)
+               reduce_table.add new ReduceAction79(6)
+               reduce_table.add new ReduceAction80(6)
+               reduce_table.add new ReduceAction81(6)
+               reduce_table.add new ReduceAction82(6)
+               reduce_table.add new ReduceAction83(6)
+               reduce_table.add new ReduceAction84(6)
+               reduce_table.add new ReduceAction85(6)
+               reduce_table.add new ReduceAction86(6)
+               reduce_table.add new ReduceAction87(6)
+               reduce_table.add new ReduceAction88(6)
+               reduce_table.add new ReduceAction89(6)
+               reduce_table.add new ReduceAction90(6)
+               reduce_table.add new ReduceAction91(6)
+               reduce_table.add new ReduceAction92(6)
+               reduce_table.add new ReduceAction93(6)
+               reduce_table.add new ReduceAction94(7)
+               reduce_table.add new ReduceAction95(7)
+               reduce_table.add new ReduceAction96(7)
+               reduce_table.add new ReduceAction97(7)
+               reduce_table.add new ReduceAction98(7)
+               reduce_table.add new ReduceAction99(7)
+               reduce_table.add new ReduceAction100(8)
+               reduce_table.add new ReduceAction101(8)
+               reduce_table.add new ReduceAction102(8)
+               reduce_table.add new ReduceAction103(9)
+               reduce_table.add new ReduceAction104(10)
+               reduce_table.add new ReduceAction105(10)
+               reduce_table.add new ReduceAction106(11)
+               reduce_table.add new ReduceAction107(11)
+               reduce_table.add new ReduceAction108(11)
+               reduce_table.add new ReduceAction109(11)
+               reduce_table.add new ReduceAction110(11)
+               reduce_table.add new ReduceAction111(11)
+               reduce_table.add new ReduceAction112(11)
+               reduce_table.add new ReduceAction113(11)
+               reduce_table.add new ReduceAction114(11)
+               reduce_table.add new ReduceAction115(11)
+               reduce_table.add new ReduceAction116(12)
+               reduce_table.add new ReduceAction117(12)
+               reduce_table.add new ReduceAction118(12)
+               reduce_table.add new ReduceAction119(13)
+               reduce_table.add new ReduceAction120(14)
+               reduce_table.add new ReduceAction121(14)
+               reduce_table.add new ReduceAction122(14)
+               reduce_table.add new ReduceAction123(14)
+               reduce_table.add new ReduceAction124(14)
+               reduce_table.add new ReduceAction125(14)
+               reduce_table.add new ReduceAction126(14)
+               reduce_table.add new ReduceAction127(14)
+               reduce_table.add new ReduceAction128(14)
+               reduce_table.add new ReduceAction129(14)
+               reduce_table.add new ReduceAction130(14)
+               reduce_table.add new ReduceAction131(14)
+               reduce_table.add new ReduceAction132(14)
+               reduce_table.add new ReduceAction133(14)
+               reduce_table.add new ReduceAction134(14)
+               reduce_table.add new ReduceAction135(14)
+               reduce_table.add new ReduceAction136(14)
+               reduce_table.add new ReduceAction137(14)
+               reduce_table.add new ReduceAction138(14)
+               reduce_table.add new ReduceAction139(14)
+               reduce_table.add new ReduceAction140(14)
+               reduce_table.add new ReduceAction141(14)
+               reduce_table.add new ReduceAction142(14)
+               reduce_table.add new ReduceAction143(14)
+               reduce_table.add new ReduceAction144(14)
+               reduce_table.add new ReduceAction145(14)
+               reduce_table.add new ReduceAction146(14)
+               reduce_table.add new ReduceAction147(14)
+               reduce_table.add new ReduceAction148(14)
+               reduce_table.add new ReduceAction149(14)
+               reduce_table.add new ReduceAction150(14)
+               reduce_table.add new ReduceAction151(14)
+               reduce_table.add new ReduceAction152(14)
+               reduce_table.add new ReduceAction153(14)
+               reduce_table.add new ReduceAction154(14)
+               reduce_table.add new ReduceAction155(14)
+               reduce_table.add new ReduceAction156(14)
+               reduce_table.add new ReduceAction157(14)
+               reduce_table.add new ReduceAction158(14)
+               reduce_table.add new ReduceAction159(14)
+               reduce_table.add new ReduceAction160(14)
+               reduce_table.add new ReduceAction161(14)
+               reduce_table.add new ReduceAction162(14)
+               reduce_table.add new ReduceAction163(14)
+               reduce_table.add new ReduceAction164(14)
+               reduce_table.add new ReduceAction165(14)
+               reduce_table.add new ReduceAction166(14)
+               reduce_table.add new ReduceAction167(14)
+               reduce_table.add new ReduceAction168(14)
+               reduce_table.add new ReduceAction169(14)
+               reduce_table.add new ReduceAction170(14)
+               reduce_table.add new ReduceAction171(14)
+               reduce_table.add new ReduceAction172(14)
+               reduce_table.add new ReduceAction173(14)
+               reduce_table.add new ReduceAction174(14)
+               reduce_table.add new ReduceAction175(14)
+               reduce_table.add new ReduceAction176(14)
+               reduce_table.add new ReduceAction177(14)
+               reduce_table.add new ReduceAction178(14)
+               reduce_table.add new ReduceAction179(14)
+               reduce_table.add new ReduceAction180(14)
+               reduce_table.add new ReduceAction181(14)
+               reduce_table.add new ReduceAction182(14)
+               reduce_table.add new ReduceAction183(14)
+               reduce_table.add new ReduceAction184(14)
+               reduce_table.add new ReduceAction185(14)
+               reduce_table.add new ReduceAction186(14)
+               reduce_table.add new ReduceAction187(14)
+               reduce_table.add new ReduceAction188(14)
+               reduce_table.add new ReduceAction189(14)
+               reduce_table.add new ReduceAction190(14)
+               reduce_table.add new ReduceAction191(14)
+               reduce_table.add new ReduceAction192(14)
+               reduce_table.add new ReduceAction193(14)
+               reduce_table.add new ReduceAction194(14)
+               reduce_table.add new ReduceAction195(14)
+               reduce_table.add new ReduceAction196(14)
+               reduce_table.add new ReduceAction197(14)
+               reduce_table.add new ReduceAction198(14)
+               reduce_table.add new ReduceAction199(14)
+               reduce_table.add new ReduceAction200(14)
+               reduce_table.add new ReduceAction201(14)
+               reduce_table.add new ReduceAction202(14)
+               reduce_table.add new ReduceAction203(14)
+               reduce_table.add new ReduceAction204(14)
+               reduce_table.add new ReduceAction205(14)
+               reduce_table.add new ReduceAction206(14)
+               reduce_table.add new ReduceAction207(14)
+               reduce_table.add new ReduceAction208(14)
+               reduce_table.add new ReduceAction209(14)
+               reduce_table.add new ReduceAction210(14)
+               reduce_table.add new ReduceAction211(14)
+               reduce_table.add new ReduceAction212(14)
+               reduce_table.add new ReduceAction213(14)
+               reduce_table.add new ReduceAction214(14)
+               reduce_table.add new ReduceAction215(14)
+               reduce_table.add new ReduceAction216(14)
+               reduce_table.add new ReduceAction217(14)
+               reduce_table.add new ReduceAction218(14)
+               reduce_table.add new ReduceAction219(14)
+               reduce_table.add new ReduceAction220(14)
+               reduce_table.add new ReduceAction221(14)
+               reduce_table.add new ReduceAction222(14)
+               reduce_table.add new ReduceAction223(14)
+               reduce_table.add new ReduceAction224(14)
+               reduce_table.add new ReduceAction225(14)
+               reduce_table.add new ReduceAction226(14)
+               reduce_table.add new ReduceAction227(14)
+               reduce_table.add new ReduceAction228(14)
+               reduce_table.add new ReduceAction229(14)
+               reduce_table.add new ReduceAction230(14)
+               reduce_table.add new ReduceAction231(14)
+               reduce_table.add new ReduceAction232(14)
+               reduce_table.add new ReduceAction233(14)
+               reduce_table.add new ReduceAction234(14)
+               reduce_table.add new ReduceAction235(14)
+               reduce_table.add new ReduceAction236(14)
+               reduce_table.add new ReduceAction237(14)
+               reduce_table.add new ReduceAction238(14)
+               reduce_table.add new ReduceAction239(14)
+               reduce_table.add new ReduceAction240(14)
+               reduce_table.add new ReduceAction241(14)
+               reduce_table.add new ReduceAction242(14)
+               reduce_table.add new ReduceAction243(14)
+               reduce_table.add new ReduceAction244(14)
+               reduce_table.add new ReduceAction245(14)
+               reduce_table.add new ReduceAction246(14)
+               reduce_table.add new ReduceAction247(14)
+               reduce_table.add new ReduceAction248(14)
+               reduce_table.add new ReduceAction249(14)
+               reduce_table.add new ReduceAction250(14)
+               reduce_table.add new ReduceAction251(14)
+               reduce_table.add new ReduceAction252(14)
+               reduce_table.add new ReduceAction253(14)
+               reduce_table.add new ReduceAction254(14)
+               reduce_table.add new ReduceAction255(14)
+               reduce_table.add new ReduceAction256(14)
+               reduce_table.add new ReduceAction257(14)
+               reduce_table.add new ReduceAction258(14)
+               reduce_table.add new ReduceAction259(14)
+               reduce_table.add new ReduceAction260(14)
+               reduce_table.add new ReduceAction261(14)
+               reduce_table.add new ReduceAction262(14)
+               reduce_table.add new ReduceAction263(14)
+               reduce_table.add new ReduceAction264(14)
+               reduce_table.add new ReduceAction265(14)
+               reduce_table.add new ReduceAction266(14)
+               reduce_table.add new ReduceAction267(14)
+               reduce_table.add new ReduceAction268(14)
+               reduce_table.add new ReduceAction269(14)
+               reduce_table.add new ReduceAction270(14)
+               reduce_table.add new ReduceAction271(14)
+               reduce_table.add new ReduceAction272(14)
+               reduce_table.add new ReduceAction273(14)
+               reduce_table.add new ReduceAction274(14)
+               reduce_table.add new ReduceAction275(14)
+               reduce_table.add new ReduceAction276(14)
+               reduce_table.add new ReduceAction277(14)
+               reduce_table.add new ReduceAction278(14)
+               reduce_table.add new ReduceAction279(14)
+               reduce_table.add new ReduceAction280(14)
+               reduce_table.add new ReduceAction281(14)
+               reduce_table.add new ReduceAction282(14)
+               reduce_table.add new ReduceAction283(14)
+               reduce_table.add new ReduceAction284(14)
+               reduce_table.add new ReduceAction285(14)
+               reduce_table.add new ReduceAction286(14)
+               reduce_table.add new ReduceAction287(14)
+               reduce_table.add new ReduceAction288(14)
+               reduce_table.add new ReduceAction289(14)
+               reduce_table.add new ReduceAction290(14)
+               reduce_table.add new ReduceAction291(14)
+               reduce_table.add new ReduceAction292(14)
+               reduce_table.add new ReduceAction293(14)
+               reduce_table.add new ReduceAction294(14)
+               reduce_table.add new ReduceAction295(14)
+               reduce_table.add new ReduceAction296(14)
+               reduce_table.add new ReduceAction297(14)
+               reduce_table.add new ReduceAction298(14)
+               reduce_table.add new ReduceAction299(14)
+               reduce_table.add new ReduceAction300(14)
+               reduce_table.add new ReduceAction301(14)
+               reduce_table.add new ReduceAction302(14)
+               reduce_table.add new ReduceAction303(14)
+               reduce_table.add new ReduceAction304(14)
+               reduce_table.add new ReduceAction305(14)
+               reduce_table.add new ReduceAction306(14)
+               reduce_table.add new ReduceAction307(14)
+               reduce_table.add new ReduceAction308(14)
+               reduce_table.add new ReduceAction309(14)
+               reduce_table.add new ReduceAction310(14)
+               reduce_table.add new ReduceAction311(14)
+               reduce_table.add new ReduceAction312(14)
+               reduce_table.add new ReduceAction313(14)
+               reduce_table.add new ReduceAction314(14)
+               reduce_table.add new ReduceAction315(14)
+               reduce_table.add new ReduceAction316(14)
+               reduce_table.add new ReduceAction317(14)
+               reduce_table.add new ReduceAction318(14)
+               reduce_table.add new ReduceAction319(14)
+               reduce_table.add new ReduceAction320(14)
+               reduce_table.add new ReduceAction321(14)
+               reduce_table.add new ReduceAction322(14)
+               reduce_table.add new ReduceAction323(14)
+               reduce_table.add new ReduceAction324(14)
+               reduce_table.add new ReduceAction325(14)
+               reduce_table.add new ReduceAction326(14)
+               reduce_table.add new ReduceAction327(14)
+               reduce_table.add new ReduceAction328(14)
+               reduce_table.add new ReduceAction329(14)
+               reduce_table.add new ReduceAction330(14)
+               reduce_table.add new ReduceAction331(14)
+               reduce_table.add new ReduceAction332(14)
+               reduce_table.add new ReduceAction333(14)
+               reduce_table.add new ReduceAction334(14)
+               reduce_table.add new ReduceAction335(14)
+               reduce_table.add new ReduceAction336(14)
+               reduce_table.add new ReduceAction337(14)
+               reduce_table.add new ReduceAction338(14)
+               reduce_table.add new ReduceAction339(14)
+               reduce_table.add new ReduceAction340(14)
+               reduce_table.add new ReduceAction341(14)
+               reduce_table.add new ReduceAction342(14)
+               reduce_table.add new ReduceAction343(14)
+               reduce_table.add new ReduceAction344(14)
+               reduce_table.add new ReduceAction345(14)
+               reduce_table.add new ReduceAction346(14)
+               reduce_table.add new ReduceAction347(14)
+               reduce_table.add new ReduceAction348(14)
+               reduce_table.add new ReduceAction349(14)
+               reduce_table.add new ReduceAction350(14)
+               reduce_table.add new ReduceAction351(14)
+               reduce_table.add new ReduceAction352(14)
+               reduce_table.add new ReduceAction353(14)
+               reduce_table.add new ReduceAction354(14)
+               reduce_table.add new ReduceAction355(14)
+               reduce_table.add new ReduceAction356(14)
+               reduce_table.add new ReduceAction357(14)
+               reduce_table.add new ReduceAction358(14)
+               reduce_table.add new ReduceAction359(14)
+               reduce_table.add new ReduceAction360(14)
+               reduce_table.add new ReduceAction361(14)
+               reduce_table.add new ReduceAction362(14)
+               reduce_table.add new ReduceAction363(14)
+               reduce_table.add new ReduceAction364(14)
+               reduce_table.add new ReduceAction365(14)
+               reduce_table.add new ReduceAction366(14)
+               reduce_table.add new ReduceAction367(14)
+               reduce_table.add new ReduceAction368(14)
+               reduce_table.add new ReduceAction369(14)
+               reduce_table.add new ReduceAction370(14)
+               reduce_table.add new ReduceAction371(14)
+               reduce_table.add new ReduceAction372(14)
+               reduce_table.add new ReduceAction373(14)
+               reduce_table.add new ReduceAction374(14)
+               reduce_table.add new ReduceAction375(14)
+               reduce_table.add new ReduceAction376(14)
+               reduce_table.add new ReduceAction377(14)
+               reduce_table.add new ReduceAction378(14)
+               reduce_table.add new ReduceAction379(14)
+               reduce_table.add new ReduceAction380(14)
+               reduce_table.add new ReduceAction381(14)
+               reduce_table.add new ReduceAction382(14)
+               reduce_table.add new ReduceAction383(14)
+               reduce_table.add new ReduceAction384(14)
+               reduce_table.add new ReduceAction385(14)
+               reduce_table.add new ReduceAction386(14)
+               reduce_table.add new ReduceAction387(14)
+               reduce_table.add new ReduceAction388(14)
+               reduce_table.add new ReduceAction389(14)
+               reduce_table.add new ReduceAction390(14)
+               reduce_table.add new ReduceAction391(14)
+               reduce_table.add new ReduceAction392(14)
+               reduce_table.add new ReduceAction393(14)
+               reduce_table.add new ReduceAction394(14)
+               reduce_table.add new ReduceAction395(14)
+               reduce_table.add new ReduceAction396(14)
+               reduce_table.add new ReduceAction397(14)
+               reduce_table.add new ReduceAction398(14)
+               reduce_table.add new ReduceAction399(14)
+               reduce_table.add new ReduceAction400(14)
+               reduce_table.add new ReduceAction400(14)
+               reduce_table.add new ReduceAction402(15)
+               reduce_table.add new ReduceAction403(15)
                reduce_table.add new ReduceAction49(15)
-               reduce_table.add new ReduceAction50(15)
-               reduce_table.add new ReduceAction51(15)
-               reduce_table.add new ReduceAction52(15)
-               reduce_table.add new ReduceAction53(15)
-               reduce_table.add new ReduceAction54(15)
-               reduce_table.add new ReduceAction55(15)
-               reduce_table.add new ReduceAction56(15)
-               reduce_table.add new ReduceAction57(15)
-               reduce_table.add new ReduceAction58(15)
-               reduce_table.add new ReduceAction59(15)
-               reduce_table.add new ReduceAction60(15)
-               reduce_table.add new ReduceAction61(15)
-               reduce_table.add new ReduceAction62(15)
-               reduce_table.add new ReduceAction63(15)
-               reduce_table.add new ReduceAction64(15)
-               reduce_table.add new ReduceAction65(15)
-               reduce_table.add new ReduceAction66(15)
-               reduce_table.add new ReduceAction67(15)
-               reduce_table.add new ReduceAction68(15)
-               reduce_table.add new ReduceAction69(15)
-               reduce_table.add new ReduceAction70(15)
-               reduce_table.add new ReduceAction71(15)
-               reduce_table.add new ReduceAction72(15)
-               reduce_table.add new ReduceAction73(15)
-               reduce_table.add new ReduceAction74(15)
-               reduce_table.add new ReduceAction75(15)
-               reduce_table.add new ReduceAction76(15)
-               reduce_table.add new ReduceAction77(15)
-               reduce_table.add new ReduceAction77(15)
-               reduce_table.add new ReduceAction79(16)
-               reduce_table.add new ReduceAction80(16)
-               reduce_table.add new ReduceAction22(16)
-               reduce_table.add new ReduceAction79(17)
-               reduce_table.add new ReduceAction83(17)
-               reduce_table.add new ReduceAction84(18)
-               reduce_table.add new ReduceAction85(18)
-               reduce_table.add new ReduceAction86(18)
-               reduce_table.add new ReduceAction87(18)
-               reduce_table.add new ReduceAction88(18)
-               reduce_table.add new ReduceAction89(19)
-               reduce_table.add new ReduceAction90(19)
-               reduce_table.add new ReduceAction91(19)
-               reduce_table.add new ReduceAction92(19)
-               reduce_table.add new ReduceAction93(19)
-               reduce_table.add new ReduceAction94(19)
-               reduce_table.add new ReduceAction95(19)
-               reduce_table.add new ReduceAction96(19)
-               reduce_table.add new ReduceAction97(19)
-               reduce_table.add new ReduceAction98(19)
-               reduce_table.add new ReduceAction99(19)
-               reduce_table.add new ReduceAction100(19)
-               reduce_table.add new ReduceAction101(19)
-               reduce_table.add new ReduceAction102(19)
-               reduce_table.add new ReduceAction103(19)
-               reduce_table.add new ReduceAction104(19)
-               reduce_table.add new ReduceAction105(19)
-               reduce_table.add new ReduceAction106(19)
-               reduce_table.add new ReduceAction107(19)
-               reduce_table.add new ReduceAction108(19)
-               reduce_table.add new ReduceAction109(19)
-               reduce_table.add new ReduceAction110(19)
-               reduce_table.add new ReduceAction111(19)
-               reduce_table.add new ReduceAction112(20)
-               reduce_table.add new ReduceAction113(20)
-               reduce_table.add new ReduceAction114(20)
-               reduce_table.add new ReduceAction115(20)
-               reduce_table.add new ReduceAction116(21)
-               reduce_table.add new ReduceAction117(21)
-               reduce_table.add new ReduceAction40(21)
-               reduce_table.add new ReduceAction119(22)
-               reduce_table.add new ReduceAction120(23)
-               reduce_table.add new ReduceAction121(23)
-               reduce_table.add new ReduceAction122(23)
-               reduce_table.add new ReduceAction123(23)
-               reduce_table.add new ReduceAction124(23)
-               reduce_table.add new ReduceAction125(24)
-               reduce_table.add new ReduceAction126(24)
-               reduce_table.add new ReduceAction22(24)
-               reduce_table.add new ReduceAction128(25)
-               reduce_table.add new ReduceAction129(26)
-               reduce_table.add new ReduceAction129(26)
-               reduce_table.add new ReduceAction131(26)
-               reduce_table.add new ReduceAction132(27)
-               reduce_table.add new ReduceAction133(27)
-               reduce_table.add new ReduceAction134(27)
-               reduce_table.add new ReduceAction135(28)
-               reduce_table.add new ReduceAction136(28)
-               reduce_table.add new ReduceAction137(28)
-               reduce_table.add new ReduceAction138(28)
-               reduce_table.add new ReduceAction139(28)
-               reduce_table.add new ReduceAction140(28)
-               reduce_table.add new ReduceAction22(29)
-               reduce_table.add new ReduceAction142(29)
-               reduce_table.add new ReduceAction143(30)
-               reduce_table.add new ReduceAction144(31)
-               reduce_table.add new ReduceAction145(31)
-               reduce_table.add new ReduceAction146(32)
-               reduce_table.add new ReduceAction22(32)
-               reduce_table.add new ReduceAction148(33)
-               reduce_table.add new ReduceAction149(34)
-               reduce_table.add new ReduceAction150(34)
-               reduce_table.add new ReduceAction150(34)
-               reduce_table.add new ReduceAction152(35)
-               reduce_table.add new ReduceAction153(35)
-               reduce_table.add new ReduceAction154(35)
-               reduce_table.add new ReduceAction155(35)
-               reduce_table.add new ReduceAction156(36)
-               reduce_table.add new ReduceAction157(36)
-               reduce_table.add new ReduceAction158(37)
-               reduce_table.add new ReduceAction158(38)
-               reduce_table.add new ReduceAction158(39)
-               reduce_table.add new ReduceAction22(39)
-               reduce_table.add new ReduceAction162(40)
-               reduce_table.add new ReduceAction163(40)
-               reduce_table.add new ReduceAction164(40)
-               reduce_table.add new ReduceAction165(40)
-               reduce_table.add new ReduceAction166(41)
-               reduce_table.add new ReduceAction167(41)
-               reduce_table.add new ReduceAction168(42)
-               reduce_table.add new ReduceAction169(42)
-               reduce_table.add new ReduceAction170(43)
-               reduce_table.add new ReduceAction171(43)
-               reduce_table.add new ReduceAction162(44)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction175(45)
-               reduce_table.add new ReduceAction176(45)
-               reduce_table.add new ReduceAction177(45)
-               reduce_table.add new ReduceAction178(45)
-               reduce_table.add new ReduceAction179(45)
-               reduce_table.add new ReduceAction180(45)
-               reduce_table.add new ReduceAction181(45)
-               reduce_table.add new ReduceAction182(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction165(45)
-               reduce_table.add new ReduceAction190(45)
-               reduce_table.add new ReduceAction191(45)
-               reduce_table.add new ReduceAction192(45)
-               reduce_table.add new ReduceAction193(45)
-               reduce_table.add new ReduceAction194(45)
-               reduce_table.add new ReduceAction195(45)
-               reduce_table.add new ReduceAction196(45)
-               reduce_table.add new ReduceAction197(45)
-               reduce_table.add new ReduceAction198(45)
-               reduce_table.add new ReduceAction199(45)
-               reduce_table.add new ReduceAction200(45)
-               reduce_table.add new ReduceAction201(45)
-               reduce_table.add new ReduceAction202(45)
-               reduce_table.add new ReduceAction201(45)
-               reduce_table.add new ReduceAction204(45)
-               reduce_table.add new ReduceAction205(45)
-               reduce_table.add new ReduceAction204(45)
-               reduce_table.add new ReduceAction207(45)
-               reduce_table.add new ReduceAction208(46)
-               reduce_table.add new ReduceAction209(46)
-               reduce_table.add new ReduceAction210(47)
-               reduce_table.add new ReduceAction211(47)
-               reduce_table.add new ReduceAction212(47)
-               reduce_table.add new ReduceAction213(47)
-               reduce_table.add new ReduceAction214(48)
-               reduce_table.add new ReduceAction215(48)
-               reduce_table.add new ReduceAction216(48)
-               reduce_table.add new ReduceAction217(48)
-               reduce_table.add new ReduceAction218(48)
-               reduce_table.add new ReduceAction219(48)
-               reduce_table.add new ReduceAction220(48)
-               reduce_table.add new ReduceAction221(48)
-               reduce_table.add new ReduceAction222(48)
-               reduce_table.add new ReduceAction223(48)
-               reduce_table.add new ReduceAction224(48)
-               reduce_table.add new ReduceAction225(48)
-               reduce_table.add new ReduceAction226(48)
-               reduce_table.add new ReduceAction227(48)
-               reduce_table.add new ReduceAction228(48)
-               reduce_table.add new ReduceAction229(48)
-               reduce_table.add new ReduceAction230(48)
-               reduce_table.add new ReduceAction231(48)
-               reduce_table.add new ReduceAction232(48)
-               reduce_table.add new ReduceAction233(48)
-               reduce_table.add new ReduceAction234(48)
-               reduce_table.add new ReduceAction235(48)
-               reduce_table.add new ReduceAction236(48)
-               reduce_table.add new ReduceAction237(48)
-               reduce_table.add new ReduceAction238(48)
-               reduce_table.add new ReduceAction239(48)
-               reduce_table.add new ReduceAction240(48)
-               reduce_table.add new ReduceAction241(48)
-               reduce_table.add new ReduceAction242(48)
-               reduce_table.add new ReduceAction243(48)
-               reduce_table.add new ReduceAction244(48)
-               reduce_table.add new ReduceAction245(48)
-               reduce_table.add new ReduceAction246(48)
-               reduce_table.add new ReduceAction247(48)
-               reduce_table.add new ReduceAction248(48)
-               reduce_table.add new ReduceAction249(48)
-               reduce_table.add new ReduceAction250(48)
-               reduce_table.add new ReduceAction251(48)
-               reduce_table.add new ReduceAction252(49)
-               reduce_table.add new ReduceAction253(49)
-               reduce_table.add new ReduceAction254(49)
-               reduce_table.add new ReduceAction255(49)
-               reduce_table.add new ReduceAction256(49)
-               reduce_table.add new ReduceAction257(49)
-               reduce_table.add new ReduceAction258(49)
-               reduce_table.add new ReduceAction259(49)
-               reduce_table.add new ReduceAction260(49)
-               reduce_table.add new ReduceAction261(49)
-               reduce_table.add new ReduceAction262(49)
-               reduce_table.add new ReduceAction263(50)
-               reduce_table.add new ReduceAction264(50)
-               reduce_table.add new ReduceAction265(50)
-               reduce_table.add new ReduceAction266(51)
-               reduce_table.add new ReduceAction267(51)
-               reduce_table.add new ReduceAction268(51)
-               reduce_table.add new ReduceAction269(51)
-               reduce_table.add new ReduceAction270(51)
-               reduce_table.add new ReduceAction271(51)
-               reduce_table.add new ReduceAction272(51)
-               reduce_table.add new ReduceAction273(51)
-               reduce_table.add new ReduceAction164(52)
-               reduce_table.add new ReduceAction275(53)
-               reduce_table.add new ReduceAction276(53)
-               reduce_table.add new ReduceAction277(54)
-               reduce_table.add new ReduceAction278(54)
-               reduce_table.add new ReduceAction279(55)
-               reduce_table.add new ReduceAction280(55)
-               reduce_table.add new ReduceAction281(56)
-               reduce_table.add new ReduceAction282(56)
-               reduce_table.add new ReduceAction283(57)
-               reduce_table.add new ReduceAction284(58)
-               reduce_table.add new ReduceAction285(58)
-               reduce_table.add new ReduceAction286(59)
-               reduce_table.add new ReduceAction287(59)
-               reduce_table.add new ReduceAction165(59)
-               reduce_table.add new ReduceAction289(60)
-               reduce_table.add new ReduceAction290(60)
-               reduce_table.add new ReduceAction291(60)
-               reduce_table.add new ReduceAction292(60)
-               reduce_table.add new ReduceAction293(61)
-               reduce_table.add new ReduceAction165(62)
-               reduce_table.add new ReduceAction295(62)
-               reduce_table.add new ReduceAction165(63)
-               reduce_table.add new ReduceAction297(63)
-               reduce_table.add new ReduceAction298(63)
-               reduce_table.add new ReduceAction299(63)
-               reduce_table.add new ReduceAction300(63)
-               reduce_table.add new ReduceAction165(64)
-               reduce_table.add new ReduceAction302(64)
-               reduce_table.add new ReduceAction165(65)
-               reduce_table.add new ReduceAction304(65)
-               reduce_table.add new ReduceAction305(65)
-               reduce_table.add new ReduceAction306(65)
-               reduce_table.add new ReduceAction307(65)
-               reduce_table.add new ReduceAction308(65)
-               reduce_table.add new ReduceAction309(65)
-               reduce_table.add new ReduceAction310(65)
-               reduce_table.add new ReduceAction311(65)
-               reduce_table.add new ReduceAction165(66)
-               reduce_table.add new ReduceAction313(66)
-               reduce_table.add new ReduceAction165(67)
-               reduce_table.add new ReduceAction315(67)
-               reduce_table.add new ReduceAction165(68)
-               reduce_table.add new ReduceAction317(68)
-               reduce_table.add new ReduceAction165(69)
-               reduce_table.add new ReduceAction319(69)
-               reduce_table.add new ReduceAction320(69)
-               reduce_table.add new ReduceAction165(70)
-               reduce_table.add new ReduceAction322(70)
-               reduce_table.add new ReduceAction323(70)
-               reduce_table.add new ReduceAction165(71)
-               reduce_table.add new ReduceAction325(71)
-               reduce_table.add new ReduceAction326(71)
-               reduce_table.add new ReduceAction327(71)
-               reduce_table.add new ReduceAction165(72)
-               reduce_table.add new ReduceAction329(72)
-               reduce_table.add new ReduceAction165(73)
-               reduce_table.add new ReduceAction331(73)
-               reduce_table.add new ReduceAction332(73)
-               reduce_table.add new ReduceAction333(73)
-               reduce_table.add new ReduceAction334(73)
-               reduce_table.add new ReduceAction165(74)
-               reduce_table.add new ReduceAction336(74)
-               reduce_table.add new ReduceAction337(74)
-               reduce_table.add new ReduceAction338(74)
-               reduce_table.add new ReduceAction339(74)
-               reduce_table.add new ReduceAction165(75)
-               reduce_table.add new ReduceAction341(75)
-               reduce_table.add new ReduceAction342(75)
-               reduce_table.add new ReduceAction190(75)
-               reduce_table.add new ReduceAction344(75)
-               reduce_table.add new ReduceAction191(75)
-               reduce_table.add new ReduceAction346(75)
-               reduce_table.add new ReduceAction192(75)
-               reduce_table.add new ReduceAction348(75)
-               reduce_table.add new ReduceAction193(75)
-               reduce_table.add new ReduceAction350(75)
-               reduce_table.add new ReduceAction194(75)
-               reduce_table.add new ReduceAction352(75)
-               reduce_table.add new ReduceAction195(75)
-               reduce_table.add new ReduceAction354(75)
-               reduce_table.add new ReduceAction196(75)
-               reduce_table.add new ReduceAction356(75)
-               reduce_table.add new ReduceAction197(75)
-               reduce_table.add new ReduceAction358(75)
-               reduce_table.add new ReduceAction198(75)
-               reduce_table.add new ReduceAction360(75)
-               reduce_table.add new ReduceAction199(75)
-               reduce_table.add new ReduceAction362(75)
-               reduce_table.add new ReduceAction200(75)
-               reduce_table.add new ReduceAction364(75)
-               reduce_table.add new ReduceAction365(75)
-               reduce_table.add new ReduceAction366(75)
-               reduce_table.add new ReduceAction367(75)
-               reduce_table.add new ReduceAction368(75)
-               reduce_table.add new ReduceAction369(75)
-               reduce_table.add new ReduceAction370(75)
-               reduce_table.add new ReduceAction371(75)
-               reduce_table.add new ReduceAction372(75)
-               reduce_table.add new ReduceAction373(75)
-               reduce_table.add new ReduceAction374(75)
-               reduce_table.add new ReduceAction375(75)
-               reduce_table.add new ReduceAction376(75)
-               reduce_table.add new ReduceAction165(76)
-               reduce_table.add new ReduceAction378(76)
-               reduce_table.add new ReduceAction379(76)
-               reduce_table.add new ReduceAction380(77)
-               reduce_table.add new ReduceAction381(77)
-               reduce_table.add new ReduceAction382(77)
-               reduce_table.add new ReduceAction383(77)
-               reduce_table.add new ReduceAction384(77)
-               reduce_table.add new ReduceAction385(77)
-               reduce_table.add new ReduceAction386(77)
-               reduce_table.add new ReduceAction387(77)
-               reduce_table.add new ReduceAction165(77)
-               reduce_table.add new ReduceAction165(77)
-               reduce_table.add new ReduceAction390(77)
-               reduce_table.add new ReduceAction391(77)
-               reduce_table.add new ReduceAction392(77)
-               reduce_table.add new ReduceAction393(78)
-               reduce_table.add new ReduceAction393(78)
-               reduce_table.add new ReduceAction395(79)
-               reduce_table.add new ReduceAction396(80)
-               reduce_table.add new ReduceAction397(81)
-               reduce_table.add new ReduceAction398(81)
-               reduce_table.add new ReduceAction396(82)
-               reduce_table.add new ReduceAction400(83)
-               reduce_table.add new ReduceAction280(83)
-               reduce_table.add new ReduceAction402(83)
-               reduce_table.add new ReduceAction403(84)
-               reduce_table.add new ReduceAction404(84)
-               reduce_table.add new ReduceAction405(85)
-               reduce_table.add new ReduceAction406(85)
-               reduce_table.add new ReduceAction407(86)
-               reduce_table.add new ReduceAction405(87)
-               reduce_table.add new ReduceAction406(87)
-               reduce_table.add new ReduceAction410(88)
-               reduce_table.add new ReduceAction411(89)
-               reduce_table.add new ReduceAction412(90)
-               reduce_table.add new ReduceAction413(90)
-               reduce_table.add new ReduceAction414(91)
-               reduce_table.add new ReduceAction22(91)
-               reduce_table.add new ReduceAction416(92)
-               reduce_table.add new ReduceAction417(92)
-               reduce_table.add new ReduceAction418(93)
-               reduce_table.add new ReduceAction419(93)
-               reduce_table.add new ReduceAction416(94)
-               reduce_table.add new ReduceAction417(94)
-               reduce_table.add new ReduceAction422(94)
-               reduce_table.add new ReduceAction165(95)
-               reduce_table.add new ReduceAction424(96)
-               reduce_table.add new ReduceAction425(97)
-               reduce_table.add new ReduceAction426(97)
-               reduce_table.add new ReduceAction427(97)
-               reduce_table.add new ReduceAction428(97)
-               reduce_table.add new ReduceAction429(97)
-               reduce_table.add new ReduceAction430(98)
-               reduce_table.add new ReduceAction431(98)
-               reduce_table.add new ReduceAction432(98)
-               reduce_table.add new ReduceAction433(98)
-               reduce_table.add new ReduceAction434(98)
-               reduce_table.add new ReduceAction397(99)
-               reduce_table.add new ReduceAction398(99)
-               reduce_table.add new ReduceAction396(100)
-               reduce_table.add new ReduceAction438(101)
-               reduce_table.add new ReduceAction165(101)
-               reduce_table.add new ReduceAction165(101)
-               reduce_table.add new ReduceAction441(101)
-               reduce_table.add new ReduceAction442(101)
-               reduce_table.add new ReduceAction443(101)
-               reduce_table.add new ReduceAction444(102)
-               reduce_table.add new ReduceAction445(102)
-               reduce_table.add new ReduceAction446(102)
-               reduce_table.add new ReduceAction447(103)
-               reduce_table.add new ReduceAction448(103)
-               reduce_table.add new ReduceAction447(104)
-               reduce_table.add new ReduceAction450(104)
-               reduce_table.add new ReduceAction448(104)
-               reduce_table.add new ReduceAction452(104)
-               reduce_table.add new ReduceAction453(105)
-               reduce_table.add new ReduceAction406(106)
-               reduce_table.add new ReduceAction455(106)
-               reduce_table.add new ReduceAction456(107)
-               reduce_table.add new ReduceAction457(108)
-               reduce_table.add new ReduceAction458(108)
-               reduce_table.add new ReduceAction459(109)
-               reduce_table.add new ReduceAction460(109)
-               reduce_table.add new ReduceAction461(110)
-               reduce_table.add new ReduceAction462(110)
-               reduce_table.add new ReduceAction463(110)
-               reduce_table.add new ReduceAction464(110)
-               reduce_table.add new ReduceAction465(111)
-               reduce_table.add new ReduceAction466(111)
-               reduce_table.add new ReduceAction467(111)
-               reduce_table.add new ReduceAction22(111)
-               reduce_table.add new ReduceAction469(112)
-               reduce_table.add new ReduceAction470(112)
-               reduce_table.add new ReduceAction471(112)
-               reduce_table.add new ReduceAction472(112)
-               reduce_table.add new ReduceAction473(113)
-               reduce_table.add new ReduceAction474(113)
-               reduce_table.add new ReduceAction475(113)
-               reduce_table.add new ReduceAction474(113)
-               reduce_table.add new ReduceAction477(114)
-               reduce_table.add new ReduceAction478(115)
-               reduce_table.add new ReduceAction22(116)
-               reduce_table.add new ReduceAction480(116)
-               reduce_table.add new ReduceAction481(117)
-               reduce_table.add new ReduceAction481(117)
-               reduce_table.add new ReduceAction481(117)
-               reduce_table.add new ReduceAction484(118)
-               reduce_table.add new ReduceAction485(118)
-               reduce_table.add new ReduceAction23(118)
-               reduce_table.add new ReduceAction23(118)
-               reduce_table.add new ReduceAction488(118)
-               reduce_table.add new ReduceAction488(118)
-               reduce_table.add new ReduceAction490(118)
-               reduce_table.add new ReduceAction491(118)
-               reduce_table.add new ReduceAction492(118)
-               reduce_table.add new ReduceAction492(118)
-               reduce_table.add new ReduceAction494(118)
-               reduce_table.add new ReduceAction22(119)
-               reduce_table.add new ReduceAction496(119)
-               reduce_table.add new ReduceAction497(120)
-               reduce_table.add new ReduceAction481(120)
-               reduce_table.add new ReduceAction481(121)
-               reduce_table.add new ReduceAction500(121)
-               reduce_table.add new ReduceAction49(122)
-               reduce_table.add new ReduceAction50(122)
-               reduce_table.add new ReduceAction51(122)
-               reduce_table.add new ReduceAction60(122)
-               reduce_table.add new ReduceAction61(122)
-               reduce_table.add new ReduceAction79(123)
-               reduce_table.add new ReduceAction80(123)
-               reduce_table.add new ReduceAction89(124)
-               reduce_table.add new ReduceAction90(124)
-               reduce_table.add new ReduceAction91(124)
-               reduce_table.add new ReduceAction92(124)
-               reduce_table.add new ReduceAction93(124)
-               reduce_table.add new ReduceAction94(124)
-               reduce_table.add new ReduceAction95(124)
-               reduce_table.add new ReduceAction96(124)
-               reduce_table.add new ReduceAction97(124)
-               reduce_table.add new ReduceAction98(124)
-               reduce_table.add new ReduceAction99(124)
-               reduce_table.add new ReduceAction100(124)
-               reduce_table.add new ReduceAction101(124)
-               reduce_table.add new ReduceAction102(124)
-               reduce_table.add new ReduceAction103(124)
-               reduce_table.add new ReduceAction104(124)
-               reduce_table.add new ReduceAction105(124)
-               reduce_table.add new ReduceAction106(124)
-               reduce_table.add new ReduceAction107(124)
-               reduce_table.add new ReduceAction108(124)
-               reduce_table.add new ReduceAction109(124)
-               reduce_table.add new ReduceAction110(124)
-               reduce_table.add new ReduceAction473(125)
+               reduce_table.add new ReduceAction402(16)
+               reduce_table.add new ReduceAction406(16)
+               reduce_table.add new ReduceAction102(17)
+               reduce_table.add new ReduceAction408(17)
+               reduce_table.add new ReduceAction118(17)
+               reduce_table.add new ReduceAction116(17)
+               reduce_table.add new ReduceAction411(18)
+               reduce_table.add new ReduceAction412(18)
+               reduce_table.add new ReduceAction413(18)
+               reduce_table.add new ReduceAction414(18)
+               reduce_table.add new ReduceAction415(18)
+               reduce_table.add new ReduceAction416(18)
+               reduce_table.add new ReduceAction417(18)
+               reduce_table.add new ReduceAction418(18)
+               reduce_table.add new ReduceAction419(18)
+               reduce_table.add new ReduceAction420(18)
+               reduce_table.add new ReduceAction421(18)
+               reduce_table.add new ReduceAction422(18)
+               reduce_table.add new ReduceAction423(18)
+               reduce_table.add new ReduceAction424(18)
+               reduce_table.add new ReduceAction425(18)
+               reduce_table.add new ReduceAction426(18)
+               reduce_table.add new ReduceAction427(18)
+               reduce_table.add new ReduceAction428(18)
+               reduce_table.add new ReduceAction429(18)
+               reduce_table.add new ReduceAction430(18)
+               reduce_table.add new ReduceAction431(18)
+               reduce_table.add new ReduceAction432(18)
+               reduce_table.add new ReduceAction433(18)
+               reduce_table.add new ReduceAction434(19)
+               reduce_table.add new ReduceAction435(19)
+               reduce_table.add new ReduceAction436(19)
+               reduce_table.add new ReduceAction437(19)
+               reduce_table.add new ReduceAction438(20)
+               reduce_table.add new ReduceAction439(20)
+               reduce_table.add new ReduceAction102(20)
+               reduce_table.add new ReduceAction441(21)
+               reduce_table.add new ReduceAction442(22)
+               reduce_table.add new ReduceAction443(22)
+               reduce_table.add new ReduceAction444(22)
+               reduce_table.add new ReduceAction445(22)
+               reduce_table.add new ReduceAction446(22)
+               reduce_table.add new ReduceAction447(23)
+               reduce_table.add new ReduceAction448(23)
+               reduce_table.add new ReduceAction49(23)
+               reduce_table.add new ReduceAction450(24)
+               reduce_table.add new ReduceAction451(25)
+               reduce_table.add new ReduceAction451(25)
+               reduce_table.add new ReduceAction453(25)
+               reduce_table.add new ReduceAction454(26)
+               reduce_table.add new ReduceAction455(26)
+               reduce_table.add new ReduceAction456(26)
+               reduce_table.add new ReduceAction457(27)
+               reduce_table.add new ReduceAction458(27)
+               reduce_table.add new ReduceAction459(27)
+               reduce_table.add new ReduceAction460(27)
+               reduce_table.add new ReduceAction461(27)
+               reduce_table.add new ReduceAction462(27)
+               reduce_table.add new ReduceAction49(28)
+               reduce_table.add new ReduceAction464(28)
+               reduce_table.add new ReduceAction465(29)
+               reduce_table.add new ReduceAction466(30)
+               reduce_table.add new ReduceAction467(30)
+               reduce_table.add new ReduceAction468(31)
+               reduce_table.add new ReduceAction49(31)
+               reduce_table.add new ReduceAction470(32)
+               reduce_table.add new ReduceAction471(33)
+               reduce_table.add new ReduceAction472(33)
+               reduce_table.add new ReduceAction472(33)
+               reduce_table.add new ReduceAction474(34)
+               reduce_table.add new ReduceAction475(34)
+               reduce_table.add new ReduceAction476(34)
+               reduce_table.add new ReduceAction477(34)
+               reduce_table.add new ReduceAction478(35)
+               reduce_table.add new ReduceAction479(35)
+               reduce_table.add new ReduceAction480(36)
+               reduce_table.add new ReduceAction480(37)
+               reduce_table.add new ReduceAction480(38)
+               reduce_table.add new ReduceAction49(38)
+               reduce_table.add new ReduceAction484(39)
+               reduce_table.add new ReduceAction485(39)
+               reduce_table.add new ReduceAction486(39)
+               reduce_table.add new ReduceAction487(39)
+               reduce_table.add new ReduceAction488(40)
+               reduce_table.add new ReduceAction489(40)
+               reduce_table.add new ReduceAction490(41)
+               reduce_table.add new ReduceAction491(41)
+               reduce_table.add new ReduceAction484(42)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction495(43)
+               reduce_table.add new ReduceAction496(43)
+               reduce_table.add new ReduceAction497(43)
+               reduce_table.add new ReduceAction498(43)
+               reduce_table.add new ReduceAction499(43)
+               reduce_table.add new ReduceAction500(43)
+               reduce_table.add new ReduceAction501(43)
+               reduce_table.add new ReduceAction502(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction487(43)
+               reduce_table.add new ReduceAction510(43)
+               reduce_table.add new ReduceAction511(43)
+               reduce_table.add new ReduceAction512(43)
+               reduce_table.add new ReduceAction513(43)
+               reduce_table.add new ReduceAction514(43)
+               reduce_table.add new ReduceAction515(43)
+               reduce_table.add new ReduceAction516(43)
+               reduce_table.add new ReduceAction517(43)
+               reduce_table.add new ReduceAction518(43)
+               reduce_table.add new ReduceAction519(43)
+               reduce_table.add new ReduceAction520(43)
+               reduce_table.add new ReduceAction521(43)
+               reduce_table.add new ReduceAction522(43)
+               reduce_table.add new ReduceAction523(43)
+               reduce_table.add new ReduceAction524(43)
+               reduce_table.add new ReduceAction525(43)
+               reduce_table.add new ReduceAction526(43)
+               reduce_table.add new ReduceAction527(43)
+               reduce_table.add new ReduceAction526(43)
+               reduce_table.add new ReduceAction529(43)
+               reduce_table.add new ReduceAction530(43)
+               reduce_table.add new ReduceAction529(43)
+               reduce_table.add new ReduceAction532(43)
+               reduce_table.add new ReduceAction533(43)
+               reduce_table.add new ReduceAction532(43)
+               reduce_table.add new ReduceAction535(43)
+               reduce_table.add new ReduceAction536(44)
+               reduce_table.add new ReduceAction537(44)
+               reduce_table.add new ReduceAction538(45)
+               reduce_table.add new ReduceAction539(45)
+               reduce_table.add new ReduceAction540(45)
+               reduce_table.add new ReduceAction541(45)
+               reduce_table.add new ReduceAction542(46)
+               reduce_table.add new ReduceAction543(46)
+               reduce_table.add new ReduceAction544(46)
+               reduce_table.add new ReduceAction545(46)
+               reduce_table.add new ReduceAction546(46)
+               reduce_table.add new ReduceAction547(46)
+               reduce_table.add new ReduceAction548(46)
+               reduce_table.add new ReduceAction549(46)
+               reduce_table.add new ReduceAction550(46)
+               reduce_table.add new ReduceAction551(46)
+               reduce_table.add new ReduceAction552(46)
+               reduce_table.add new ReduceAction553(46)
+               reduce_table.add new ReduceAction554(46)
+               reduce_table.add new ReduceAction555(46)
+               reduce_table.add new ReduceAction556(46)
+               reduce_table.add new ReduceAction557(46)
+               reduce_table.add new ReduceAction558(46)
+               reduce_table.add new ReduceAction559(46)
+               reduce_table.add new ReduceAction560(46)
+               reduce_table.add new ReduceAction561(46)
+               reduce_table.add new ReduceAction562(46)
+               reduce_table.add new ReduceAction563(46)
+               reduce_table.add new ReduceAction564(46)
+               reduce_table.add new ReduceAction565(46)
+               reduce_table.add new ReduceAction566(46)
+               reduce_table.add new ReduceAction567(46)
+               reduce_table.add new ReduceAction568(46)
+               reduce_table.add new ReduceAction569(46)
+               reduce_table.add new ReduceAction570(46)
+               reduce_table.add new ReduceAction571(46)
+               reduce_table.add new ReduceAction572(46)
+               reduce_table.add new ReduceAction573(46)
+               reduce_table.add new ReduceAction574(46)
+               reduce_table.add new ReduceAction575(46)
+               reduce_table.add new ReduceAction576(46)
+               reduce_table.add new ReduceAction577(46)
+               reduce_table.add new ReduceAction578(46)
+               reduce_table.add new ReduceAction579(46)
+               reduce_table.add new ReduceAction580(46)
+               reduce_table.add new ReduceAction581(46)
+               reduce_table.add new ReduceAction582(46)
+               reduce_table.add new ReduceAction583(46)
+               reduce_table.add new ReduceAction584(46)
+               reduce_table.add new ReduceAction585(46)
+               reduce_table.add new ReduceAction586(46)
+               reduce_table.add new ReduceAction587(46)
+               reduce_table.add new ReduceAction588(46)
+               reduce_table.add new ReduceAction589(46)
+               reduce_table.add new ReduceAction590(46)
+               reduce_table.add new ReduceAction591(46)
+               reduce_table.add new ReduceAction592(46)
+               reduce_table.add new ReduceAction593(46)
+               reduce_table.add new ReduceAction594(46)
+               reduce_table.add new ReduceAction595(46)
+               reduce_table.add new ReduceAction596(46)
+               reduce_table.add new ReduceAction597(46)
+               reduce_table.add new ReduceAction598(47)
+               reduce_table.add new ReduceAction599(47)
+               reduce_table.add new ReduceAction600(47)
+               reduce_table.add new ReduceAction601(47)
+               reduce_table.add new ReduceAction602(47)
+               reduce_table.add new ReduceAction603(47)
+               reduce_table.add new ReduceAction604(47)
+               reduce_table.add new ReduceAction605(47)
+               reduce_table.add new ReduceAction606(47)
+               reduce_table.add new ReduceAction607(47)
+               reduce_table.add new ReduceAction608(47)
+               reduce_table.add new ReduceAction609(48)
+               reduce_table.add new ReduceAction610(48)
+               reduce_table.add new ReduceAction611(48)
+               reduce_table.add new ReduceAction612(49)
+               reduce_table.add new ReduceAction613(49)
+               reduce_table.add new ReduceAction614(49)
+               reduce_table.add new ReduceAction615(49)
+               reduce_table.add new ReduceAction616(49)
+               reduce_table.add new ReduceAction617(49)
+               reduce_table.add new ReduceAction618(49)
+               reduce_table.add new ReduceAction619(49)
+               reduce_table.add new ReduceAction486(50)
+               reduce_table.add new ReduceAction621(51)
+               reduce_table.add new ReduceAction622(51)
+               reduce_table.add new ReduceAction623(52)
+               reduce_table.add new ReduceAction624(52)
+               reduce_table.add new ReduceAction625(53)
+               reduce_table.add new ReduceAction626(53)
+               reduce_table.add new ReduceAction627(54)
+               reduce_table.add new ReduceAction628(54)
+               reduce_table.add new ReduceAction629(55)
+               reduce_table.add new ReduceAction630(56)
+               reduce_table.add new ReduceAction631(56)
+               reduce_table.add new ReduceAction632(57)
+               reduce_table.add new ReduceAction633(57)
+               reduce_table.add new ReduceAction487(57)
+               reduce_table.add new ReduceAction635(58)
+               reduce_table.add new ReduceAction636(58)
+               reduce_table.add new ReduceAction637(58)
+               reduce_table.add new ReduceAction638(58)
+               reduce_table.add new ReduceAction639(59)
+               reduce_table.add new ReduceAction487(60)
+               reduce_table.add new ReduceAction641(60)
+               reduce_table.add new ReduceAction487(61)
+               reduce_table.add new ReduceAction643(61)
+               reduce_table.add new ReduceAction644(61)
+               reduce_table.add new ReduceAction645(61)
+               reduce_table.add new ReduceAction646(61)
+               reduce_table.add new ReduceAction487(62)
+               reduce_table.add new ReduceAction648(62)
+               reduce_table.add new ReduceAction487(63)
+               reduce_table.add new ReduceAction650(63)
+               reduce_table.add new ReduceAction651(63)
+               reduce_table.add new ReduceAction652(63)
+               reduce_table.add new ReduceAction653(63)
+               reduce_table.add new ReduceAction654(63)
+               reduce_table.add new ReduceAction655(63)
+               reduce_table.add new ReduceAction656(63)
+               reduce_table.add new ReduceAction657(63)
+               reduce_table.add new ReduceAction487(64)
+               reduce_table.add new ReduceAction659(64)
+               reduce_table.add new ReduceAction487(65)
+               reduce_table.add new ReduceAction661(65)
+               reduce_table.add new ReduceAction487(66)
+               reduce_table.add new ReduceAction663(66)
+               reduce_table.add new ReduceAction487(67)
+               reduce_table.add new ReduceAction665(67)
+               reduce_table.add new ReduceAction666(67)
+               reduce_table.add new ReduceAction487(68)
+               reduce_table.add new ReduceAction668(68)
+               reduce_table.add new ReduceAction669(68)
+               reduce_table.add new ReduceAction487(69)
+               reduce_table.add new ReduceAction671(69)
+               reduce_table.add new ReduceAction672(69)
+               reduce_table.add new ReduceAction673(69)
+               reduce_table.add new ReduceAction487(70)
+               reduce_table.add new ReduceAction675(70)
+               reduce_table.add new ReduceAction487(71)
+               reduce_table.add new ReduceAction677(71)
+               reduce_table.add new ReduceAction678(71)
+               reduce_table.add new ReduceAction679(71)
+               reduce_table.add new ReduceAction680(71)
+               reduce_table.add new ReduceAction487(72)
+               reduce_table.add new ReduceAction682(72)
+               reduce_table.add new ReduceAction683(72)
+               reduce_table.add new ReduceAction684(72)
+               reduce_table.add new ReduceAction685(72)
+               reduce_table.add new ReduceAction686(72)
+               reduce_table.add new ReduceAction687(72)
+               reduce_table.add new ReduceAction688(72)
+               reduce_table.add new ReduceAction689(72)
+               reduce_table.add new ReduceAction690(72)
+               reduce_table.add new ReduceAction691(72)
+               reduce_table.add new ReduceAction692(72)
+               reduce_table.add new ReduceAction693(72)
+               reduce_table.add new ReduceAction694(72)
+               reduce_table.add new ReduceAction695(72)
+               reduce_table.add new ReduceAction696(72)
+               reduce_table.add new ReduceAction697(72)
+               reduce_table.add new ReduceAction698(72)
+               reduce_table.add new ReduceAction699(72)
+               reduce_table.add new ReduceAction700(72)
+               reduce_table.add new ReduceAction701(72)
+               reduce_table.add new ReduceAction702(72)
+               reduce_table.add new ReduceAction703(72)
+               reduce_table.add new ReduceAction704(72)
+               reduce_table.add new ReduceAction705(72)
+               reduce_table.add new ReduceAction706(72)
+               reduce_table.add new ReduceAction707(72)
+               reduce_table.add new ReduceAction708(72)
+               reduce_table.add new ReduceAction709(72)
+               reduce_table.add new ReduceAction710(72)
+               reduce_table.add new ReduceAction487(73)
+               reduce_table.add new ReduceAction712(73)
+               reduce_table.add new ReduceAction713(73)
+               reduce_table.add new ReduceAction714(73)
+               reduce_table.add new ReduceAction510(73)
+               reduce_table.add new ReduceAction716(73)
+               reduce_table.add new ReduceAction511(73)
+               reduce_table.add new ReduceAction718(73)
+               reduce_table.add new ReduceAction512(73)
+               reduce_table.add new ReduceAction720(73)
+               reduce_table.add new ReduceAction513(73)
+               reduce_table.add new ReduceAction722(73)
+               reduce_table.add new ReduceAction514(73)
+               reduce_table.add new ReduceAction724(73)
+               reduce_table.add new ReduceAction515(73)
+               reduce_table.add new ReduceAction726(73)
+               reduce_table.add new ReduceAction516(73)
+               reduce_table.add new ReduceAction728(73)
+               reduce_table.add new ReduceAction517(73)
+               reduce_table.add new ReduceAction730(73)
+               reduce_table.add new ReduceAction518(73)
+               reduce_table.add new ReduceAction732(73)
+               reduce_table.add new ReduceAction519(73)
+               reduce_table.add new ReduceAction734(73)
+               reduce_table.add new ReduceAction520(73)
+               reduce_table.add new ReduceAction736(73)
+               reduce_table.add new ReduceAction521(73)
+               reduce_table.add new ReduceAction738(73)
+               reduce_table.add new ReduceAction522(73)
+               reduce_table.add new ReduceAction740(73)
+               reduce_table.add new ReduceAction523(73)
+               reduce_table.add new ReduceAction742(73)
+               reduce_table.add new ReduceAction524(73)
+               reduce_table.add new ReduceAction744(73)
+               reduce_table.add new ReduceAction525(73)
+               reduce_table.add new ReduceAction746(73)
+               reduce_table.add new ReduceAction747(73)
+               reduce_table.add new ReduceAction748(73)
+               reduce_table.add new ReduceAction749(73)
+               reduce_table.add new ReduceAction750(73)
+               reduce_table.add new ReduceAction751(73)
+               reduce_table.add new ReduceAction752(73)
+               reduce_table.add new ReduceAction753(73)
+               reduce_table.add new ReduceAction754(73)
+               reduce_table.add new ReduceAction755(73)
+               reduce_table.add new ReduceAction756(73)
+               reduce_table.add new ReduceAction757(73)
+               reduce_table.add new ReduceAction758(73)
+               reduce_table.add new ReduceAction487(74)
+               reduce_table.add new ReduceAction760(74)
+               reduce_table.add new ReduceAction761(74)
+               reduce_table.add new ReduceAction762(75)
+               reduce_table.add new ReduceAction763(75)
+               reduce_table.add new ReduceAction764(75)
+               reduce_table.add new ReduceAction765(75)
+               reduce_table.add new ReduceAction766(75)
+               reduce_table.add new ReduceAction767(75)
+               reduce_table.add new ReduceAction768(75)
+               reduce_table.add new ReduceAction769(75)
+               reduce_table.add new ReduceAction487(75)
+               reduce_table.add new ReduceAction771(75)
+               reduce_table.add new ReduceAction772(75)
+               reduce_table.add new ReduceAction773(75)
+               reduce_table.add new ReduceAction487(75)
+               reduce_table.add new ReduceAction775(75)
+               reduce_table.add new ReduceAction776(75)
+               reduce_table.add new ReduceAction777(75)
+               reduce_table.add new ReduceAction778(76)
+               reduce_table.add new ReduceAction778(76)
+               reduce_table.add new ReduceAction780(77)
+               reduce_table.add new ReduceAction781(78)
+               reduce_table.add new ReduceAction782(79)
+               reduce_table.add new ReduceAction783(79)
+               reduce_table.add new ReduceAction781(80)
+               reduce_table.add new ReduceAction785(81)
+               reduce_table.add new ReduceAction626(81)
+               reduce_table.add new ReduceAction787(81)
+               reduce_table.add new ReduceAction788(82)
+               reduce_table.add new ReduceAction789(82)
+               reduce_table.add new ReduceAction790(83)
+               reduce_table.add new ReduceAction791(83)
+               reduce_table.add new ReduceAction792(84)
+               reduce_table.add new ReduceAction790(85)
+               reduce_table.add new ReduceAction791(85)
+               reduce_table.add new ReduceAction795(86)
+               reduce_table.add new ReduceAction796(87)
+               reduce_table.add new ReduceAction797(88)
+               reduce_table.add new ReduceAction798(88)
+               reduce_table.add new ReduceAction799(89)
+               reduce_table.add new ReduceAction49(89)
+               reduce_table.add new ReduceAction801(90)
+               reduce_table.add new ReduceAction802(90)
+               reduce_table.add new ReduceAction803(90)
+               reduce_table.add new ReduceAction804(90)
+               reduce_table.add new ReduceAction805(90)
+               reduce_table.add new ReduceAction806(90)
+               reduce_table.add new ReduceAction807(90)
+               reduce_table.add new ReduceAction808(90)
+               reduce_table.add new ReduceAction809(90)
+               reduce_table.add new ReduceAction810(90)
+               reduce_table.add new ReduceAction811(90)
+               reduce_table.add new ReduceAction812(90)
+               reduce_table.add new ReduceAction813(90)
+               reduce_table.add new ReduceAction814(90)
+               reduce_table.add new ReduceAction815(90)
+               reduce_table.add new ReduceAction816(90)
+               reduce_table.add new ReduceAction817(90)
+               reduce_table.add new ReduceAction818(90)
+               reduce_table.add new ReduceAction819(90)
+               reduce_table.add new ReduceAction820(90)
+               reduce_table.add new ReduceAction821(91)
+               reduce_table.add new ReduceAction822(91)
+               reduce_table.add new ReduceAction801(92)
+               reduce_table.add new ReduceAction802(92)
+               reduce_table.add new ReduceAction803(92)
+               reduce_table.add new ReduceAction804(92)
+               reduce_table.add new ReduceAction805(92)
+               reduce_table.add new ReduceAction806(92)
+               reduce_table.add new ReduceAction807(92)
+               reduce_table.add new ReduceAction808(92)
+               reduce_table.add new ReduceAction809(92)
+               reduce_table.add new ReduceAction810(92)
+               reduce_table.add new ReduceAction811(92)
+               reduce_table.add new ReduceAction812(92)
+               reduce_table.add new ReduceAction813(92)
+               reduce_table.add new ReduceAction814(92)
+               reduce_table.add new ReduceAction815(92)
+               reduce_table.add new ReduceAction816(92)
+               reduce_table.add new ReduceAction817(92)
+               reduce_table.add new ReduceAction818(92)
+               reduce_table.add new ReduceAction819(92)
+               reduce_table.add new ReduceAction820(92)
+               reduce_table.add new ReduceAction843(92)
+               reduce_table.add new ReduceAction844(92)
+               reduce_table.add new ReduceAction845(92)
+               reduce_table.add new ReduceAction846(92)
+               reduce_table.add new ReduceAction847(92)
+               reduce_table.add new ReduceAction848(92)
+               reduce_table.add new ReduceAction849(92)
+               reduce_table.add new ReduceAction850(92)
+               reduce_table.add new ReduceAction851(92)
+               reduce_table.add new ReduceAction852(92)
+               reduce_table.add new ReduceAction487(93)
+               reduce_table.add new ReduceAction854(94)
+               reduce_table.add new ReduceAction855(95)
+               reduce_table.add new ReduceAction856(95)
+               reduce_table.add new ReduceAction857(95)
+               reduce_table.add new ReduceAction858(95)
+               reduce_table.add new ReduceAction859(95)
+               reduce_table.add new ReduceAction860(95)
+               reduce_table.add new ReduceAction861(95)
+               reduce_table.add new ReduceAction862(95)
+               reduce_table.add new ReduceAction863(95)
+               reduce_table.add new ReduceAction864(95)
+               reduce_table.add new ReduceAction865(95)
+               reduce_table.add new ReduceAction866(95)
+               reduce_table.add new ReduceAction867(95)
+               reduce_table.add new ReduceAction868(95)
+               reduce_table.add new ReduceAction869(95)
+               reduce_table.add new ReduceAction870(95)
+               reduce_table.add new ReduceAction871(95)
+               reduce_table.add new ReduceAction872(95)
+               reduce_table.add new ReduceAction873(95)
+               reduce_table.add new ReduceAction874(95)
+               reduce_table.add new ReduceAction875(95)
+               reduce_table.add new ReduceAction876(95)
+               reduce_table.add new ReduceAction877(95)
+               reduce_table.add new ReduceAction878(95)
+               reduce_table.add new ReduceAction879(95)
+               reduce_table.add new ReduceAction880(95)
+               reduce_table.add new ReduceAction881(95)
+               reduce_table.add new ReduceAction882(95)
+               reduce_table.add new ReduceAction883(95)
+               reduce_table.add new ReduceAction884(95)
+               reduce_table.add new ReduceAction885(95)
+               reduce_table.add new ReduceAction886(95)
+               reduce_table.add new ReduceAction887(95)
+               reduce_table.add new ReduceAction888(95)
+               reduce_table.add new ReduceAction889(95)
+               reduce_table.add new ReduceAction890(95)
+               reduce_table.add new ReduceAction891(95)
+               reduce_table.add new ReduceAction892(95)
+               reduce_table.add new ReduceAction893(95)
+               reduce_table.add new ReduceAction894(95)
+               reduce_table.add new ReduceAction895(95)
+               reduce_table.add new ReduceAction896(95)
+               reduce_table.add new ReduceAction897(95)
+               reduce_table.add new ReduceAction898(95)
+               reduce_table.add new ReduceAction899(95)
+               reduce_table.add new ReduceAction900(95)
+               reduce_table.add new ReduceAction901(95)
+               reduce_table.add new ReduceAction902(95)
+               reduce_table.add new ReduceAction903(95)
+               reduce_table.add new ReduceAction904(95)
+               reduce_table.add new ReduceAction905(96)
+               reduce_table.add new ReduceAction906(96)
+               reduce_table.add new ReduceAction907(96)
+               reduce_table.add new ReduceAction908(96)
+               reduce_table.add new ReduceAction909(96)
+               reduce_table.add new ReduceAction782(97)
+               reduce_table.add new ReduceAction783(97)
+               reduce_table.add new ReduceAction781(98)
+               reduce_table.add new ReduceAction913(99)
+               reduce_table.add new ReduceAction487(99)
+               reduce_table.add new ReduceAction487(99)
+               reduce_table.add new ReduceAction916(99)
+               reduce_table.add new ReduceAction917(99)
+               reduce_table.add new ReduceAction918(99)
+               reduce_table.add new ReduceAction919(99)
+               reduce_table.add new ReduceAction920(100)
+               reduce_table.add new ReduceAction921(100)
+               reduce_table.add new ReduceAction922(100)
+               reduce_table.add new ReduceAction923(101)
+               reduce_table.add new ReduceAction924(101)
+               reduce_table.add new ReduceAction923(102)
+               reduce_table.add new ReduceAction926(102)
+               reduce_table.add new ReduceAction924(102)
+               reduce_table.add new ReduceAction928(102)
+               reduce_table.add new ReduceAction929(103)
+               reduce_table.add new ReduceAction791(104)
+               reduce_table.add new ReduceAction931(104)
+               reduce_table.add new ReduceAction932(105)
+               reduce_table.add new ReduceAction933(106)
+               reduce_table.add new ReduceAction408(106)
+               reduce_table.add new ReduceAction935(107)
+               reduce_table.add new ReduceAction936(107)
+               reduce_table.add new ReduceAction937(108)
+               reduce_table.add new ReduceAction938(108)
+               reduce_table.add new ReduceAction939(108)
+               reduce_table.add new ReduceAction940(108)
+               reduce_table.add new ReduceAction941(109)
+               reduce_table.add new ReduceAction942(109)
+               reduce_table.add new ReduceAction943(109)
+               reduce_table.add new ReduceAction49(109)
+               reduce_table.add new ReduceAction945(110)
+               reduce_table.add new ReduceAction946(110)
+               reduce_table.add new ReduceAction947(110)
+               reduce_table.add new ReduceAction948(110)
+               reduce_table.add new ReduceAction949(111)
+               reduce_table.add new ReduceAction950(111)
+               reduce_table.add new ReduceAction951(111)
+               reduce_table.add new ReduceAction950(111)
+               reduce_table.add new ReduceAction953(112)
+               reduce_table.add new ReduceAction954(113)
+               reduce_table.add new ReduceAction49(114)
+               reduce_table.add new ReduceAction956(114)
+               reduce_table.add new ReduceAction957(115)
+               reduce_table.add new ReduceAction957(115)
+               reduce_table.add new ReduceAction957(115)
+               reduce_table.add new ReduceAction960(116)
+               reduce_table.add new ReduceAction961(116)
+               reduce_table.add new ReduceAction50(116)
+               reduce_table.add new ReduceAction50(116)
+               reduce_table.add new ReduceAction964(116)
+               reduce_table.add new ReduceAction964(116)
+               reduce_table.add new ReduceAction966(116)
+               reduce_table.add new ReduceAction967(116)
+               reduce_table.add new ReduceAction968(116)
+               reduce_table.add new ReduceAction968(116)
+               reduce_table.add new ReduceAction970(116)
+               reduce_table.add new ReduceAction49(117)
+               reduce_table.add new ReduceAction972(117)
+               reduce_table.add new ReduceAction973(118)
+               reduce_table.add new ReduceAction957(118)
+               reduce_table.add new ReduceAction957(119)
+               reduce_table.add new ReduceAction976(119)
+               reduce_table.add new ReduceAction120(120)
+               reduce_table.add new ReduceAction121(120)
+               reduce_table.add new ReduceAction122(120)
+               reduce_table.add new ReduceAction123(120)
+               reduce_table.add new ReduceAction124(120)
+               reduce_table.add new ReduceAction125(120)
+               reduce_table.add new ReduceAction126(120)
+               reduce_table.add new ReduceAction127(120)
+               reduce_table.add new ReduceAction128(120)
+               reduce_table.add new ReduceAction129(120)
+               reduce_table.add new ReduceAction130(120)
+               reduce_table.add new ReduceAction131(120)
+               reduce_table.add new ReduceAction132(120)
+               reduce_table.add new ReduceAction133(120)
+               reduce_table.add new ReduceAction134(120)
+               reduce_table.add new ReduceAction135(120)
+               reduce_table.add new ReduceAction136(120)
+               reduce_table.add new ReduceAction137(120)
+               reduce_table.add new ReduceAction138(120)
+               reduce_table.add new ReduceAction139(120)
+               reduce_table.add new ReduceAction140(120)
+               reduce_table.add new ReduceAction141(120)
+               reduce_table.add new ReduceAction142(120)
+               reduce_table.add new ReduceAction143(120)
+               reduce_table.add new ReduceAction144(120)
+               reduce_table.add new ReduceAction145(120)
+               reduce_table.add new ReduceAction146(120)
+               reduce_table.add new ReduceAction147(120)
+               reduce_table.add new ReduceAction148(120)
+               reduce_table.add new ReduceAction149(120)
+               reduce_table.add new ReduceAction230(120)
+               reduce_table.add new ReduceAction231(120)
+               reduce_table.add new ReduceAction232(120)
+               reduce_table.add new ReduceAction233(120)
+               reduce_table.add new ReduceAction234(120)
+               reduce_table.add new ReduceAction235(120)
+               reduce_table.add new ReduceAction236(120)
+               reduce_table.add new ReduceAction237(120)
+               reduce_table.add new ReduceAction238(120)
+               reduce_table.add new ReduceAction239(120)
+               reduce_table.add new ReduceAction240(120)
+               reduce_table.add new ReduceAction241(120)
+               reduce_table.add new ReduceAction242(120)
+               reduce_table.add new ReduceAction243(120)
+               reduce_table.add new ReduceAction244(120)
+               reduce_table.add new ReduceAction245(120)
+               reduce_table.add new ReduceAction246(120)
+               reduce_table.add new ReduceAction247(120)
+               reduce_table.add new ReduceAction248(120)
+               reduce_table.add new ReduceAction249(120)
+               reduce_table.add new ReduceAction402(121)
+               reduce_table.add new ReduceAction403(121)
+               reduce_table.add new ReduceAction411(122)
+               reduce_table.add new ReduceAction412(122)
+               reduce_table.add new ReduceAction413(122)
+               reduce_table.add new ReduceAction414(122)
+               reduce_table.add new ReduceAction415(122)
+               reduce_table.add new ReduceAction416(122)
+               reduce_table.add new ReduceAction417(122)
+               reduce_table.add new ReduceAction418(122)
+               reduce_table.add new ReduceAction419(122)
+               reduce_table.add new ReduceAction420(122)
+               reduce_table.add new ReduceAction421(122)
+               reduce_table.add new ReduceAction422(122)
+               reduce_table.add new ReduceAction423(122)
+               reduce_table.add new ReduceAction424(122)
+               reduce_table.add new ReduceAction425(122)
+               reduce_table.add new ReduceAction426(122)
+               reduce_table.add new ReduceAction427(122)
+               reduce_table.add new ReduceAction428(122)
+               reduce_table.add new ReduceAction429(122)
+               reduce_table.add new ReduceAction430(122)
+               reduce_table.add new ReduceAction431(122)
+               reduce_table.add new ReduceAction432(122)
+               reduce_table.add new ReduceAction949(123)
+               reduce_table.add new ReduceAction950(123)
+               reduce_table.add new ReduceAction951(123)
+               reduce_table.add new ReduceAction950(123)
+               reduce_table.add new ReduceAction471(124)
+               reduce_table.add new ReduceAction472(124)
+               reduce_table.add new ReduceAction472(124)
                reduce_table.add new ReduceAction474(125)
                reduce_table.add new ReduceAction475(125)
-               reduce_table.add new ReduceAction474(125)
-               reduce_table.add new ReduceAction149(126)
-               reduce_table.add new ReduceAction150(126)
-               reduce_table.add new ReduceAction150(126)
-               reduce_table.add new ReduceAction152(127)
-               reduce_table.add new ReduceAction153(127)
-               reduce_table.add new ReduceAction165(128)
-               reduce_table.add new ReduceAction295(128)
-               reduce_table.add new ReduceAction165(129)
-               reduce_table.add new ReduceAction297(129)
-               reduce_table.add new ReduceAction298(129)
-               reduce_table.add new ReduceAction299(129)
-               reduce_table.add new ReduceAction300(129)
-               reduce_table.add new ReduceAction165(130)
-               reduce_table.add new ReduceAction302(130)
-               reduce_table.add new ReduceAction165(131)
-               reduce_table.add new ReduceAction304(131)
-               reduce_table.add new ReduceAction305(131)
-               reduce_table.add new ReduceAction306(131)
-               reduce_table.add new ReduceAction307(131)
-               reduce_table.add new ReduceAction308(131)
-               reduce_table.add new ReduceAction309(131)
-               reduce_table.add new ReduceAction310(131)
-               reduce_table.add new ReduceAction311(131)
-               reduce_table.add new ReduceAction165(132)
-               reduce_table.add new ReduceAction313(132)
-               reduce_table.add new ReduceAction165(133)
-               reduce_table.add new ReduceAction315(133)
-               reduce_table.add new ReduceAction165(134)
-               reduce_table.add new ReduceAction317(134)
-               reduce_table.add new ReduceAction165(135)
-               reduce_table.add new ReduceAction319(135)
-               reduce_table.add new ReduceAction320(135)
-               reduce_table.add new ReduceAction165(136)
-               reduce_table.add new ReduceAction322(136)
-               reduce_table.add new ReduceAction323(136)
-               reduce_table.add new ReduceAction165(137)
-               reduce_table.add new ReduceAction325(137)
-               reduce_table.add new ReduceAction326(137)
-               reduce_table.add new ReduceAction327(137)
-               reduce_table.add new ReduceAction165(138)
-               reduce_table.add new ReduceAction329(138)
-               reduce_table.add new ReduceAction165(139)
-               reduce_table.add new ReduceAction331(139)
-               reduce_table.add new ReduceAction332(139)
-               reduce_table.add new ReduceAction333(139)
-               reduce_table.add new ReduceAction334(139)
-               reduce_table.add new ReduceAction165(140)
-               reduce_table.add new ReduceAction336(140)
-               reduce_table.add new ReduceAction337(140)
-               reduce_table.add new ReduceAction338(140)
-               reduce_table.add new ReduceAction339(140)
-               reduce_table.add new ReduceAction165(141)
-               reduce_table.add new ReduceAction341(141)
-               reduce_table.add new ReduceAction342(141)
-               reduce_table.add new ReduceAction190(141)
-               reduce_table.add new ReduceAction194(141)
-               reduce_table.add new ReduceAction344(141)
-               reduce_table.add new ReduceAction352(141)
-               reduce_table.add new ReduceAction191(141)
-               reduce_table.add new ReduceAction195(141)
-               reduce_table.add new ReduceAction346(141)
-               reduce_table.add new ReduceAction354(141)
-               reduce_table.add new ReduceAction192(141)
-               reduce_table.add new ReduceAction196(141)
-               reduce_table.add new ReduceAction348(141)
-               reduce_table.add new ReduceAction356(141)
-               reduce_table.add new ReduceAction193(141)
-               reduce_table.add new ReduceAction197(141)
-               reduce_table.add new ReduceAction350(141)
-               reduce_table.add new ReduceAction358(141)
-               reduce_table.add new ReduceAction198(141)
-               reduce_table.add new ReduceAction360(141)
-               reduce_table.add new ReduceAction199(141)
-               reduce_table.add new ReduceAction200(141)
-               reduce_table.add new ReduceAction362(141)
-               reduce_table.add new ReduceAction364(141)
-               reduce_table.add new ReduceAction366(141)
-               reduce_table.add new ReduceAction367(141)
-               reduce_table.add new ReduceAction368(141)
-               reduce_table.add new ReduceAction369(141)
-               reduce_table.add new ReduceAction370(141)
-               reduce_table.add new ReduceAction371(141)
-               reduce_table.add new ReduceAction372(141)
-               reduce_table.add new ReduceAction373(141)
-               reduce_table.add new ReduceAction374(141)
-               reduce_table.add new ReduceAction375(141)
-               reduce_table.add new ReduceAction376(141)
-               reduce_table.add new ReduceAction165(142)
-               reduce_table.add new ReduceAction378(142)
-               reduce_table.add new ReduceAction379(142)
-               reduce_table.add new ReduceAction380(143)
-               reduce_table.add new ReduceAction381(143)
-               reduce_table.add new ReduceAction382(143)
-               reduce_table.add new ReduceAction383(143)
-               reduce_table.add new ReduceAction384(143)
-               reduce_table.add new ReduceAction385(143)
-               reduce_table.add new ReduceAction386(143)
-               reduce_table.add new ReduceAction387(143)
-               reduce_table.add new ReduceAction165(143)
-               reduce_table.add new ReduceAction165(143)
-               reduce_table.add new ReduceAction149(144)
-               reduce_table.add new ReduceAction150(144)
-               reduce_table.add new ReduceAction150(144)
-               reduce_table.add new ReduceAction152(145)
-               reduce_table.add new ReduceAction153(145)
-               reduce_table.add new ReduceAction154(145)
-               reduce_table.add new ReduceAction155(145)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction175(146)
-               reduce_table.add new ReduceAction176(146)
-               reduce_table.add new ReduceAction177(146)
-               reduce_table.add new ReduceAction178(146)
-               reduce_table.add new ReduceAction179(146)
-               reduce_table.add new ReduceAction180(146)
-               reduce_table.add new ReduceAction181(146)
-               reduce_table.add new ReduceAction182(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction165(146)
-               reduce_table.add new ReduceAction190(146)
-               reduce_table.add new ReduceAction191(146)
-               reduce_table.add new ReduceAction192(146)
-               reduce_table.add new ReduceAction193(146)
-               reduce_table.add new ReduceAction194(146)
-               reduce_table.add new ReduceAction195(146)
-               reduce_table.add new ReduceAction196(146)
-               reduce_table.add new ReduceAction197(146)
-               reduce_table.add new ReduceAction198(146)
-               reduce_table.add new ReduceAction199(146)
-               reduce_table.add new ReduceAction200(146)
-               reduce_table.add new ReduceAction201(146)
-               reduce_table.add new ReduceAction202(146)
-               reduce_table.add new ReduceAction201(146)
-               reduce_table.add new ReduceAction204(146)
-               reduce_table.add new ReduceAction205(146)
-               reduce_table.add new ReduceAction204(146)
-               reduce_table.add new ReduceAction207(146)
-               reduce_table.add new ReduceAction214(147)
-               reduce_table.add new ReduceAction215(147)
-               reduce_table.add new ReduceAction216(147)
-               reduce_table.add new ReduceAction217(147)
-               reduce_table.add new ReduceAction218(147)
-               reduce_table.add new ReduceAction219(147)
-               reduce_table.add new ReduceAction220(147)
-               reduce_table.add new ReduceAction221(147)
-               reduce_table.add new ReduceAction222(147)
-               reduce_table.add new ReduceAction223(147)
-               reduce_table.add new ReduceAction224(147)
-               reduce_table.add new ReduceAction225(147)
-               reduce_table.add new ReduceAction226(147)
-               reduce_table.add new ReduceAction227(147)
-               reduce_table.add new ReduceAction228(147)
-               reduce_table.add new ReduceAction229(147)
-               reduce_table.add new ReduceAction230(147)
-               reduce_table.add new ReduceAction231(147)
-               reduce_table.add new ReduceAction232(147)
-               reduce_table.add new ReduceAction233(147)
-               reduce_table.add new ReduceAction234(147)
-               reduce_table.add new ReduceAction235(147)
-               reduce_table.add new ReduceAction236(147)
-               reduce_table.add new ReduceAction237(147)
-               reduce_table.add new ReduceAction238(147)
-               reduce_table.add new ReduceAction239(147)
-               reduce_table.add new ReduceAction240(147)
-               reduce_table.add new ReduceAction241(147)
-               reduce_table.add new ReduceAction242(147)
-               reduce_table.add new ReduceAction243(147)
-               reduce_table.add new ReduceAction244(147)
-               reduce_table.add new ReduceAction245(147)
-               reduce_table.add new ReduceAction246(147)
-               reduce_table.add new ReduceAction247(147)
-               reduce_table.add new ReduceAction248(147)
-               reduce_table.add new ReduceAction249(147)
-               reduce_table.add new ReduceAction250(147)
-               reduce_table.add new ReduceAction251(147)
-               reduce_table.add new ReduceAction165(148)
-               reduce_table.add new ReduceAction295(148)
-               reduce_table.add new ReduceAction165(149)
-               reduce_table.add new ReduceAction297(149)
-               reduce_table.add new ReduceAction298(149)
-               reduce_table.add new ReduceAction299(149)
-               reduce_table.add new ReduceAction300(149)
-               reduce_table.add new ReduceAction165(150)
-               reduce_table.add new ReduceAction302(150)
-               reduce_table.add new ReduceAction165(151)
-               reduce_table.add new ReduceAction304(151)
-               reduce_table.add new ReduceAction305(151)
-               reduce_table.add new ReduceAction306(151)
-               reduce_table.add new ReduceAction307(151)
-               reduce_table.add new ReduceAction308(151)
-               reduce_table.add new ReduceAction309(151)
-               reduce_table.add new ReduceAction310(151)
-               reduce_table.add new ReduceAction311(151)
-               reduce_table.add new ReduceAction165(152)
-               reduce_table.add new ReduceAction313(152)
-               reduce_table.add new ReduceAction165(153)
-               reduce_table.add new ReduceAction315(153)
-               reduce_table.add new ReduceAction165(154)
-               reduce_table.add new ReduceAction317(154)
-               reduce_table.add new ReduceAction165(155)
-               reduce_table.add new ReduceAction319(155)
-               reduce_table.add new ReduceAction320(155)
-               reduce_table.add new ReduceAction165(156)
-               reduce_table.add new ReduceAction322(156)
-               reduce_table.add new ReduceAction323(156)
-               reduce_table.add new ReduceAction165(157)
-               reduce_table.add new ReduceAction325(157)
-               reduce_table.add new ReduceAction326(157)
-               reduce_table.add new ReduceAction327(157)
-               reduce_table.add new ReduceAction165(158)
-               reduce_table.add new ReduceAction329(158)
-               reduce_table.add new ReduceAction165(159)
-               reduce_table.add new ReduceAction331(159)
-               reduce_table.add new ReduceAction332(159)
-               reduce_table.add new ReduceAction333(159)
-               reduce_table.add new ReduceAction334(159)
-               reduce_table.add new ReduceAction165(160)
-               reduce_table.add new ReduceAction336(160)
-               reduce_table.add new ReduceAction337(160)
-               reduce_table.add new ReduceAction338(160)
-               reduce_table.add new ReduceAction339(160)
-               reduce_table.add new ReduceAction165(161)
-               reduce_table.add new ReduceAction341(161)
-               reduce_table.add new ReduceAction342(161)
-               reduce_table.add new ReduceAction190(161)
-               reduce_table.add new ReduceAction344(161)
-               reduce_table.add new ReduceAction191(161)
-               reduce_table.add new ReduceAction346(161)
-               reduce_table.add new ReduceAction192(161)
-               reduce_table.add new ReduceAction348(161)
-               reduce_table.add new ReduceAction193(161)
-               reduce_table.add new ReduceAction350(161)
-               reduce_table.add new ReduceAction194(161)
-               reduce_table.add new ReduceAction352(161)
-               reduce_table.add new ReduceAction195(161)
-               reduce_table.add new ReduceAction354(161)
-               reduce_table.add new ReduceAction196(161)
-               reduce_table.add new ReduceAction356(161)
-               reduce_table.add new ReduceAction197(161)
-               reduce_table.add new ReduceAction358(161)
-               reduce_table.add new ReduceAction198(161)
-               reduce_table.add new ReduceAction360(161)
-               reduce_table.add new ReduceAction199(161)
-               reduce_table.add new ReduceAction362(161)
-               reduce_table.add new ReduceAction200(161)
-               reduce_table.add new ReduceAction364(161)
-               reduce_table.add new ReduceAction365(161)
-               reduce_table.add new ReduceAction366(161)
-               reduce_table.add new ReduceAction367(161)
-               reduce_table.add new ReduceAction368(161)
-               reduce_table.add new ReduceAction369(161)
-               reduce_table.add new ReduceAction370(161)
-               reduce_table.add new ReduceAction371(161)
-               reduce_table.add new ReduceAction372(161)
-               reduce_table.add new ReduceAction373(161)
-               reduce_table.add new ReduceAction374(161)
-               reduce_table.add new ReduceAction375(161)
-               reduce_table.add new ReduceAction376(161)
-               reduce_table.add new ReduceAction165(162)
-               reduce_table.add new ReduceAction378(162)
-               reduce_table.add new ReduceAction379(162)
-               reduce_table.add new ReduceAction380(163)
-               reduce_table.add new ReduceAction381(163)
-               reduce_table.add new ReduceAction382(163)
-               reduce_table.add new ReduceAction383(163)
-               reduce_table.add new ReduceAction384(163)
-               reduce_table.add new ReduceAction385(163)
-               reduce_table.add new ReduceAction386(163)
-               reduce_table.add new ReduceAction387(163)
-               reduce_table.add new ReduceAction165(163)
-               reduce_table.add new ReduceAction412(164)
-               reduce_table.add new ReduceAction413(164)
-               reduce_table.add new ReduceAction414(165)
-               reduce_table.add new ReduceAction22(165)
-               reduce_table.add new ReduceAction416(166)
-               reduce_table.add new ReduceAction416(167)
-               reduce_table.add new ReduceAction397(168)
-               reduce_table.add new ReduceAction398(168)
-               reduce_table.add new ReduceAction438(169)
-               reduce_table.add new ReduceAction165(169)
-               reduce_table.add new ReduceAction165(169)
-               reduce_table.add new ReduceAction441(169)
-               reduce_table.add new ReduceAction442(169)
-               reduce_table.add new ReduceAction149(170)
-               reduce_table.add new ReduceAction150(170)
-               reduce_table.add new ReduceAction150(170)
-               reduce_table.add new ReduceAction152(171)
-               reduce_table.add new ReduceAction153(171)
-               reduce_table.add new ReduceAction165(172)
-               reduce_table.add new ReduceAction295(172)
-               reduce_table.add new ReduceAction165(173)
-               reduce_table.add new ReduceAction297(173)
-               reduce_table.add new ReduceAction298(173)
-               reduce_table.add new ReduceAction299(173)
-               reduce_table.add new ReduceAction300(173)
-               reduce_table.add new ReduceAction165(174)
-               reduce_table.add new ReduceAction302(174)
-               reduce_table.add new ReduceAction165(175)
-               reduce_table.add new ReduceAction304(175)
-               reduce_table.add new ReduceAction305(175)
-               reduce_table.add new ReduceAction306(175)
-               reduce_table.add new ReduceAction307(175)
-               reduce_table.add new ReduceAction308(175)
-               reduce_table.add new ReduceAction309(175)
-               reduce_table.add new ReduceAction310(175)
-               reduce_table.add new ReduceAction311(175)
-               reduce_table.add new ReduceAction165(176)
-               reduce_table.add new ReduceAction313(176)
-               reduce_table.add new ReduceAction165(177)
-               reduce_table.add new ReduceAction315(177)
-               reduce_table.add new ReduceAction165(178)
-               reduce_table.add new ReduceAction317(178)
-               reduce_table.add new ReduceAction165(179)
-               reduce_table.add new ReduceAction319(179)
-               reduce_table.add new ReduceAction320(179)
-               reduce_table.add new ReduceAction165(180)
-               reduce_table.add new ReduceAction322(180)
-               reduce_table.add new ReduceAction323(180)
-               reduce_table.add new ReduceAction165(181)
-               reduce_table.add new ReduceAction325(181)
-               reduce_table.add new ReduceAction326(181)
-               reduce_table.add new ReduceAction327(181)
-               reduce_table.add new ReduceAction165(182)
-               reduce_table.add new ReduceAction329(182)
-               reduce_table.add new ReduceAction165(183)
-               reduce_table.add new ReduceAction331(183)
-               reduce_table.add new ReduceAction332(183)
-               reduce_table.add new ReduceAction333(183)
-               reduce_table.add new ReduceAction334(183)
-               reduce_table.add new ReduceAction165(184)
-               reduce_table.add new ReduceAction336(184)
-               reduce_table.add new ReduceAction337(184)
-               reduce_table.add new ReduceAction871(184)
-               reduce_table.add new ReduceAction165(185)
-               reduce_table.add new ReduceAction873(185)
-               reduce_table.add new ReduceAction874(185)
-               reduce_table.add new ReduceAction875(185)
-               reduce_table.add new ReduceAction876(185)
-               reduce_table.add new ReduceAction877(185)
-               reduce_table.add new ReduceAction878(185)
-               reduce_table.add new ReduceAction879(185)
-               reduce_table.add new ReduceAction880(185)
-               reduce_table.add new ReduceAction881(185)
-               reduce_table.add new ReduceAction198(185)
-               reduce_table.add new ReduceAction360(185)
-               reduce_table.add new ReduceAction884(185)
-               reduce_table.add new ReduceAction885(185)
-               reduce_table.add new ReduceAction366(185)
-               reduce_table.add new ReduceAction367(185)
-               reduce_table.add new ReduceAction368(185)
-               reduce_table.add new ReduceAction369(185)
-               reduce_table.add new ReduceAction370(185)
-               reduce_table.add new ReduceAction371(185)
-               reduce_table.add new ReduceAction372(185)
-               reduce_table.add new ReduceAction373(185)
-               reduce_table.add new ReduceAction374(185)
-               reduce_table.add new ReduceAction375(185)
-               reduce_table.add new ReduceAction376(185)
-               reduce_table.add new ReduceAction165(186)
-               reduce_table.add new ReduceAction378(186)
-               reduce_table.add new ReduceAction379(186)
-               reduce_table.add new ReduceAction380(187)
-               reduce_table.add new ReduceAction381(187)
-               reduce_table.add new ReduceAction382(187)
-               reduce_table.add new ReduceAction383(187)
-               reduce_table.add new ReduceAction384(187)
-               reduce_table.add new ReduceAction385(187)
-               reduce_table.add new ReduceAction386(187)
-               reduce_table.add new ReduceAction387(187)
-               reduce_table.add new ReduceAction165(187)
-               reduce_table.add new ReduceAction909(188)
-               reduce_table.add new ReduceAction910(188)
-               reduce_table.add new ReduceAction162(189)
-               reduce_table.add new ReduceAction163(189)
-               reduce_table.add new ReduceAction164(189)
-               reduce_table.add new ReduceAction165(189)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction175(190)
-               reduce_table.add new ReduceAction176(190)
-               reduce_table.add new ReduceAction177(190)
-               reduce_table.add new ReduceAction178(190)
-               reduce_table.add new ReduceAction179(190)
-               reduce_table.add new ReduceAction180(190)
-               reduce_table.add new ReduceAction181(190)
-               reduce_table.add new ReduceAction182(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction165(190)
-               reduce_table.add new ReduceAction190(190)
-               reduce_table.add new ReduceAction191(190)
-               reduce_table.add new ReduceAction192(190)
-               reduce_table.add new ReduceAction193(190)
-               reduce_table.add new ReduceAction194(190)
-               reduce_table.add new ReduceAction195(190)
-               reduce_table.add new ReduceAction196(190)
-               reduce_table.add new ReduceAction197(190)
-               reduce_table.add new ReduceAction198(190)
-               reduce_table.add new ReduceAction199(190)
-               reduce_table.add new ReduceAction200(190)
-               reduce_table.add new ReduceAction201(190)
-               reduce_table.add new ReduceAction202(190)
-               reduce_table.add new ReduceAction201(190)
-               reduce_table.add new ReduceAction204(190)
-               reduce_table.add new ReduceAction205(190)
-               reduce_table.add new ReduceAction204(190)
-               reduce_table.add new ReduceAction207(190)
-               reduce_table.add new ReduceAction263(191)
-               reduce_table.add new ReduceAction264(191)
-               reduce_table.add new ReduceAction265(191)
-               reduce_table.add new ReduceAction266(192)
-               reduce_table.add new ReduceAction275(193)
-               reduce_table.add new ReduceAction276(193)
-               reduce_table.add new ReduceAction277(194)
-               reduce_table.add new ReduceAction278(194)
-               reduce_table.add new ReduceAction279(195)
-               reduce_table.add new ReduceAction280(195)
-               reduce_table.add new ReduceAction284(196)
-               reduce_table.add new ReduceAction285(196)
-               reduce_table.add new ReduceAction289(197)
-               reduce_table.add new ReduceAction290(197)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction175(198)
-               reduce_table.add new ReduceAction176(198)
-               reduce_table.add new ReduceAction177(198)
-               reduce_table.add new ReduceAction178(198)
-               reduce_table.add new ReduceAction179(198)
-               reduce_table.add new ReduceAction180(198)
-               reduce_table.add new ReduceAction181(198)
-               reduce_table.add new ReduceAction182(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction165(198)
-               reduce_table.add new ReduceAction190(198)
-               reduce_table.add new ReduceAction191(198)
-               reduce_table.add new ReduceAction192(198)
-               reduce_table.add new ReduceAction193(198)
-               reduce_table.add new ReduceAction194(198)
-               reduce_table.add new ReduceAction195(198)
-               reduce_table.add new ReduceAction196(198)
-               reduce_table.add new ReduceAction197(198)
-               reduce_table.add new ReduceAction198(198)
-               reduce_table.add new ReduceAction199(198)
-               reduce_table.add new ReduceAction200(198)
-               reduce_table.add new ReduceAction201(198)
-               reduce_table.add new ReduceAction202(198)
-               reduce_table.add new ReduceAction201(198)
-               reduce_table.add new ReduceAction204(198)
-               reduce_table.add new ReduceAction205(198)
-               reduce_table.add new ReduceAction204(198)
-               reduce_table.add new ReduceAction207(198)
-               reduce_table.add new ReduceAction162(199)
-               reduce_table.add new ReduceAction163(199)
-               reduce_table.add new ReduceAction164(199)
-               reduce_table.add new ReduceAction162(200)
-               reduce_table.add new ReduceAction163(200)
-               reduce_table.add new ReduceAction164(200)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction175(201)
-               reduce_table.add new ReduceAction176(201)
-               reduce_table.add new ReduceAction177(201)
-               reduce_table.add new ReduceAction178(201)
-               reduce_table.add new ReduceAction179(201)
-               reduce_table.add new ReduceAction180(201)
-               reduce_table.add new ReduceAction181(201)
-               reduce_table.add new ReduceAction182(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction165(201)
-               reduce_table.add new ReduceAction207(201)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction175(202)
-               reduce_table.add new ReduceAction176(202)
-               reduce_table.add new ReduceAction177(202)
-               reduce_table.add new ReduceAction178(202)
-               reduce_table.add new ReduceAction179(202)
-               reduce_table.add new ReduceAction180(202)
-               reduce_table.add new ReduceAction181(202)
-               reduce_table.add new ReduceAction182(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction165(202)
-               reduce_table.add new ReduceAction207(202)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction175(203)
-               reduce_table.add new ReduceAction176(203)
-               reduce_table.add new ReduceAction177(203)
-               reduce_table.add new ReduceAction178(203)
-               reduce_table.add new ReduceAction179(203)
-               reduce_table.add new ReduceAction180(203)
-               reduce_table.add new ReduceAction181(203)
-               reduce_table.add new ReduceAction182(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction165(203)
-               reduce_table.add new ReduceAction207(203)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction175(204)
-               reduce_table.add new ReduceAction176(204)
-               reduce_table.add new ReduceAction177(204)
-               reduce_table.add new ReduceAction178(204)
-               reduce_table.add new ReduceAction179(204)
-               reduce_table.add new ReduceAction180(204)
-               reduce_table.add new ReduceAction181(204)
-               reduce_table.add new ReduceAction182(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction165(204)
-               reduce_table.add new ReduceAction207(204)
-               reduce_table.add new ReduceAction444(205)
-               reduce_table.add new ReduceAction446(205)
-               reduce_table.add new ReduceAction484(206)
-               reduce_table.add new ReduceAction485(206)
-               reduce_table.add new ReduceAction23(206)
-               reduce_table.add new ReduceAction1078(207)
-               reduce_table.add new ReduceAction1079(207)
-               reduce_table.add new ReduceAction1080(208)
-               reduce_table.add new ReduceAction1081(208)
-               reduce_table.add new ReduceAction1082(209)
-               reduce_table.add new ReduceAction1083(209)
-               reduce_table.add new ReduceAction38(210)
-               reduce_table.add new ReduceAction1085(210)
-               reduce_table.add new ReduceAction46(211)
-               reduce_table.add new ReduceAction1087(211)
-               reduce_table.add new ReduceAction418(212)
-               reduce_table.add new ReduceAction1089(212)
-               reduce_table.add new ReduceAction1090(213)
-               reduce_table.add new ReduceAction1091(213)
-               reduce_table.add new ReduceAction1092(214)
-               reduce_table.add new ReduceAction1093(214)
-               reduce_table.add new ReduceAction156(215)
-               reduce_table.add new ReduceAction1095(215)
-               reduce_table.add new ReduceAction397(216)
-               reduce_table.add new ReduceAction1097(216)
-               reduce_table.add new ReduceAction397(217)
-               reduce_table.add new ReduceAction1097(217)
-               reduce_table.add new ReduceAction397(218)
-               reduce_table.add new ReduceAction1097(218)
-               reduce_table.add new ReduceAction458(219)
-               reduce_table.add new ReduceAction1103(219)
-               reduce_table.add new ReduceAction418(220)
-               reduce_table.add new ReduceAction1089(220)
-               reduce_table.add new ReduceAction397(221)
-               reduce_table.add new ReduceAction1097(221)
-               reduce_table.add new ReduceAction397(222)
-               reduce_table.add new ReduceAction1097(222)
-               reduce_table.add new ReduceAction459(223)
-               reduce_table.add new ReduceAction1111(223)
-               reduce_table.add new ReduceAction1112(224)
-               reduce_table.add new ReduceAction1113(224)
-               reduce_table.add new ReduceAction481(225)
-               reduce_table.add new ReduceAction500(225)
+               reduce_table.add new ReduceAction487(126)
+               reduce_table.add new ReduceAction641(126)
+               reduce_table.add new ReduceAction487(127)
+               reduce_table.add new ReduceAction643(127)
+               reduce_table.add new ReduceAction644(127)
+               reduce_table.add new ReduceAction645(127)
+               reduce_table.add new ReduceAction646(127)
+               reduce_table.add new ReduceAction487(128)
+               reduce_table.add new ReduceAction648(128)
+               reduce_table.add new ReduceAction487(129)
+               reduce_table.add new ReduceAction650(129)
+               reduce_table.add new ReduceAction651(129)
+               reduce_table.add new ReduceAction652(129)
+               reduce_table.add new ReduceAction653(129)
+               reduce_table.add new ReduceAction654(129)
+               reduce_table.add new ReduceAction655(129)
+               reduce_table.add new ReduceAction656(129)
+               reduce_table.add new ReduceAction657(129)
+               reduce_table.add new ReduceAction487(130)
+               reduce_table.add new ReduceAction659(130)
+               reduce_table.add new ReduceAction487(131)
+               reduce_table.add new ReduceAction661(131)
+               reduce_table.add new ReduceAction487(132)
+               reduce_table.add new ReduceAction663(132)
+               reduce_table.add new ReduceAction487(133)
+               reduce_table.add new ReduceAction665(133)
+               reduce_table.add new ReduceAction666(133)
+               reduce_table.add new ReduceAction487(134)
+               reduce_table.add new ReduceAction668(134)
+               reduce_table.add new ReduceAction669(134)
+               reduce_table.add new ReduceAction487(135)
+               reduce_table.add new ReduceAction671(135)
+               reduce_table.add new ReduceAction672(135)
+               reduce_table.add new ReduceAction673(135)
+               reduce_table.add new ReduceAction487(136)
+               reduce_table.add new ReduceAction675(136)
+               reduce_table.add new ReduceAction487(137)
+               reduce_table.add new ReduceAction677(137)
+               reduce_table.add new ReduceAction678(137)
+               reduce_table.add new ReduceAction679(137)
+               reduce_table.add new ReduceAction680(137)
+               reduce_table.add new ReduceAction487(138)
+               reduce_table.add new ReduceAction682(138)
+               reduce_table.add new ReduceAction683(138)
+               reduce_table.add new ReduceAction684(138)
+               reduce_table.add new ReduceAction685(138)
+               reduce_table.add new ReduceAction686(138)
+               reduce_table.add new ReduceAction687(138)
+               reduce_table.add new ReduceAction695(138)
+               reduce_table.add new ReduceAction703(138)
+               reduce_table.add new ReduceAction688(138)
+               reduce_table.add new ReduceAction696(138)
+               reduce_table.add new ReduceAction704(138)
+               reduce_table.add new ReduceAction689(138)
+               reduce_table.add new ReduceAction697(138)
+               reduce_table.add new ReduceAction705(138)
+               reduce_table.add new ReduceAction690(138)
+               reduce_table.add new ReduceAction698(138)
+               reduce_table.add new ReduceAction706(138)
+               reduce_table.add new ReduceAction691(138)
+               reduce_table.add new ReduceAction699(138)
+               reduce_table.add new ReduceAction707(138)
+               reduce_table.add new ReduceAction692(138)
+               reduce_table.add new ReduceAction700(138)
+               reduce_table.add new ReduceAction708(138)
+               reduce_table.add new ReduceAction693(138)
+               reduce_table.add new ReduceAction701(138)
+               reduce_table.add new ReduceAction709(138)
+               reduce_table.add new ReduceAction694(138)
+               reduce_table.add new ReduceAction702(138)
+               reduce_table.add new ReduceAction710(138)
+               reduce_table.add new ReduceAction487(139)
+               reduce_table.add new ReduceAction712(139)
+               reduce_table.add new ReduceAction713(139)
+               reduce_table.add new ReduceAction714(139)
+               reduce_table.add new ReduceAction510(139)
+               reduce_table.add new ReduceAction514(139)
+               reduce_table.add new ReduceAction518(139)
+               reduce_table.add new ReduceAction716(139)
+               reduce_table.add new ReduceAction724(139)
+               reduce_table.add new ReduceAction732(139)
+               reduce_table.add new ReduceAction511(139)
+               reduce_table.add new ReduceAction515(139)
+               reduce_table.add new ReduceAction519(139)
+               reduce_table.add new ReduceAction718(139)
+               reduce_table.add new ReduceAction726(139)
+               reduce_table.add new ReduceAction734(139)
+               reduce_table.add new ReduceAction512(139)
+               reduce_table.add new ReduceAction516(139)
+               reduce_table.add new ReduceAction520(139)
+               reduce_table.add new ReduceAction720(139)
+               reduce_table.add new ReduceAction728(139)
+               reduce_table.add new ReduceAction736(139)
+               reduce_table.add new ReduceAction513(139)
+               reduce_table.add new ReduceAction517(139)
+               reduce_table.add new ReduceAction521(139)
+               reduce_table.add new ReduceAction722(139)
+               reduce_table.add new ReduceAction730(139)
+               reduce_table.add new ReduceAction738(139)
+               reduce_table.add new ReduceAction522(139)
+               reduce_table.add new ReduceAction740(139)
+               reduce_table.add new ReduceAction523(139)
+               reduce_table.add new ReduceAction524(139)
+               reduce_table.add new ReduceAction525(139)
+               reduce_table.add new ReduceAction742(139)
+               reduce_table.add new ReduceAction744(139)
+               reduce_table.add new ReduceAction746(139)
+               reduce_table.add new ReduceAction748(139)
+               reduce_table.add new ReduceAction749(139)
+               reduce_table.add new ReduceAction750(139)
+               reduce_table.add new ReduceAction751(139)
+               reduce_table.add new ReduceAction752(139)
+               reduce_table.add new ReduceAction753(139)
+               reduce_table.add new ReduceAction754(139)
+               reduce_table.add new ReduceAction755(139)
+               reduce_table.add new ReduceAction756(139)
+               reduce_table.add new ReduceAction757(139)
+               reduce_table.add new ReduceAction758(139)
+               reduce_table.add new ReduceAction487(140)
+               reduce_table.add new ReduceAction760(140)
+               reduce_table.add new ReduceAction761(140)
+               reduce_table.add new ReduceAction762(141)
+               reduce_table.add new ReduceAction763(141)
+               reduce_table.add new ReduceAction764(141)
+               reduce_table.add new ReduceAction765(141)
+               reduce_table.add new ReduceAction766(141)
+               reduce_table.add new ReduceAction767(141)
+               reduce_table.add new ReduceAction768(141)
+               reduce_table.add new ReduceAction769(141)
+               reduce_table.add new ReduceAction487(141)
+               reduce_table.add new ReduceAction771(141)
+               reduce_table.add new ReduceAction772(141)
+               reduce_table.add new ReduceAction773(141)
+               reduce_table.add new ReduceAction487(141)
+               reduce_table.add new ReduceAction471(142)
+               reduce_table.add new ReduceAction472(142)
+               reduce_table.add new ReduceAction472(142)
+               reduce_table.add new ReduceAction474(143)
+               reduce_table.add new ReduceAction475(143)
+               reduce_table.add new ReduceAction476(143)
+               reduce_table.add new ReduceAction477(143)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction495(144)
+               reduce_table.add new ReduceAction496(144)
+               reduce_table.add new ReduceAction497(144)
+               reduce_table.add new ReduceAction498(144)
+               reduce_table.add new ReduceAction499(144)
+               reduce_table.add new ReduceAction500(144)
+               reduce_table.add new ReduceAction501(144)
+               reduce_table.add new ReduceAction502(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction487(144)
+               reduce_table.add new ReduceAction510(144)
+               reduce_table.add new ReduceAction511(144)
+               reduce_table.add new ReduceAction512(144)
+               reduce_table.add new ReduceAction513(144)
+               reduce_table.add new ReduceAction514(144)
+               reduce_table.add new ReduceAction515(144)
+               reduce_table.add new ReduceAction516(144)
+               reduce_table.add new ReduceAction517(144)
+               reduce_table.add new ReduceAction518(144)
+               reduce_table.add new ReduceAction519(144)
+               reduce_table.add new ReduceAction520(144)
+               reduce_table.add new ReduceAction521(144)
+               reduce_table.add new ReduceAction522(144)
+               reduce_table.add new ReduceAction523(144)
+               reduce_table.add new ReduceAction524(144)
+               reduce_table.add new ReduceAction525(144)
+               reduce_table.add new ReduceAction526(144)
+               reduce_table.add new ReduceAction527(144)
+               reduce_table.add new ReduceAction526(144)
+               reduce_table.add new ReduceAction529(144)
+               reduce_table.add new ReduceAction530(144)
+               reduce_table.add new ReduceAction529(144)
+               reduce_table.add new ReduceAction532(144)
+               reduce_table.add new ReduceAction533(144)
+               reduce_table.add new ReduceAction532(144)
+               reduce_table.add new ReduceAction535(144)
+               reduce_table.add new ReduceAction542(145)
+               reduce_table.add new ReduceAction543(145)
+               reduce_table.add new ReduceAction544(145)
+               reduce_table.add new ReduceAction545(145)
+               reduce_table.add new ReduceAction546(145)
+               reduce_table.add new ReduceAction547(145)
+               reduce_table.add new ReduceAction548(145)
+               reduce_table.add new ReduceAction549(145)
+               reduce_table.add new ReduceAction550(145)
+               reduce_table.add new ReduceAction551(145)
+               reduce_table.add new ReduceAction552(145)
+               reduce_table.add new ReduceAction553(145)
+               reduce_table.add new ReduceAction554(145)
+               reduce_table.add new ReduceAction555(145)
+               reduce_table.add new ReduceAction556(145)
+               reduce_table.add new ReduceAction557(145)
+               reduce_table.add new ReduceAction558(145)
+               reduce_table.add new ReduceAction559(145)
+               reduce_table.add new ReduceAction560(145)
+               reduce_table.add new ReduceAction561(145)
+               reduce_table.add new ReduceAction562(145)
+               reduce_table.add new ReduceAction563(145)
+               reduce_table.add new ReduceAction564(145)
+               reduce_table.add new ReduceAction565(145)
+               reduce_table.add new ReduceAction566(145)
+               reduce_table.add new ReduceAction567(145)
+               reduce_table.add new ReduceAction568(145)
+               reduce_table.add new ReduceAction569(145)
+               reduce_table.add new ReduceAction570(145)
+               reduce_table.add new ReduceAction571(145)
+               reduce_table.add new ReduceAction572(145)
+               reduce_table.add new ReduceAction573(145)
+               reduce_table.add new ReduceAction574(145)
+               reduce_table.add new ReduceAction575(145)
+               reduce_table.add new ReduceAction576(145)
+               reduce_table.add new ReduceAction577(145)
+               reduce_table.add new ReduceAction578(145)
+               reduce_table.add new ReduceAction579(145)
+               reduce_table.add new ReduceAction580(145)
+               reduce_table.add new ReduceAction581(145)
+               reduce_table.add new ReduceAction582(145)
+               reduce_table.add new ReduceAction583(145)
+               reduce_table.add new ReduceAction584(145)
+               reduce_table.add new ReduceAction585(145)
+               reduce_table.add new ReduceAction586(145)
+               reduce_table.add new ReduceAction587(145)
+               reduce_table.add new ReduceAction588(145)
+               reduce_table.add new ReduceAction589(145)
+               reduce_table.add new ReduceAction590(145)
+               reduce_table.add new ReduceAction591(145)
+               reduce_table.add new ReduceAction592(145)
+               reduce_table.add new ReduceAction593(145)
+               reduce_table.add new ReduceAction594(145)
+               reduce_table.add new ReduceAction595(145)
+               reduce_table.add new ReduceAction596(145)
+               reduce_table.add new ReduceAction597(145)
+               reduce_table.add new ReduceAction487(146)
+               reduce_table.add new ReduceAction641(146)
+               reduce_table.add new ReduceAction487(147)
+               reduce_table.add new ReduceAction643(147)
+               reduce_table.add new ReduceAction644(147)
+               reduce_table.add new ReduceAction645(147)
+               reduce_table.add new ReduceAction646(147)
+               reduce_table.add new ReduceAction487(148)
+               reduce_table.add new ReduceAction648(148)
+               reduce_table.add new ReduceAction487(149)
+               reduce_table.add new ReduceAction650(149)
+               reduce_table.add new ReduceAction651(149)
+               reduce_table.add new ReduceAction652(149)
+               reduce_table.add new ReduceAction653(149)
+               reduce_table.add new ReduceAction654(149)
+               reduce_table.add new ReduceAction655(149)
+               reduce_table.add new ReduceAction656(149)
+               reduce_table.add new ReduceAction657(149)
+               reduce_table.add new ReduceAction487(150)
+               reduce_table.add new ReduceAction659(150)
+               reduce_table.add new ReduceAction487(151)
+               reduce_table.add new ReduceAction661(151)
+               reduce_table.add new ReduceAction487(152)
+               reduce_table.add new ReduceAction663(152)
+               reduce_table.add new ReduceAction487(153)
+               reduce_table.add new ReduceAction665(153)
+               reduce_table.add new ReduceAction666(153)
+               reduce_table.add new ReduceAction487(154)
+               reduce_table.add new ReduceAction668(154)
+               reduce_table.add new ReduceAction669(154)
+               reduce_table.add new ReduceAction487(155)
+               reduce_table.add new ReduceAction671(155)
+               reduce_table.add new ReduceAction672(155)
+               reduce_table.add new ReduceAction673(155)
+               reduce_table.add new ReduceAction487(156)
+               reduce_table.add new ReduceAction675(156)
+               reduce_table.add new ReduceAction487(157)
+               reduce_table.add new ReduceAction677(157)
+               reduce_table.add new ReduceAction678(157)
+               reduce_table.add new ReduceAction679(157)
+               reduce_table.add new ReduceAction680(157)
+               reduce_table.add new ReduceAction487(158)
+               reduce_table.add new ReduceAction682(158)
+               reduce_table.add new ReduceAction683(158)
+               reduce_table.add new ReduceAction684(158)
+               reduce_table.add new ReduceAction685(158)
+               reduce_table.add new ReduceAction686(158)
+               reduce_table.add new ReduceAction687(158)
+               reduce_table.add new ReduceAction688(158)
+               reduce_table.add new ReduceAction689(158)
+               reduce_table.add new ReduceAction690(158)
+               reduce_table.add new ReduceAction691(158)
+               reduce_table.add new ReduceAction692(158)
+               reduce_table.add new ReduceAction693(158)
+               reduce_table.add new ReduceAction694(158)
+               reduce_table.add new ReduceAction695(158)
+               reduce_table.add new ReduceAction696(158)
+               reduce_table.add new ReduceAction697(158)
+               reduce_table.add new ReduceAction698(158)
+               reduce_table.add new ReduceAction699(158)
+               reduce_table.add new ReduceAction700(158)
+               reduce_table.add new ReduceAction701(158)
+               reduce_table.add new ReduceAction702(158)
+               reduce_table.add new ReduceAction703(158)
+               reduce_table.add new ReduceAction704(158)
+               reduce_table.add new ReduceAction705(158)
+               reduce_table.add new ReduceAction706(158)
+               reduce_table.add new ReduceAction707(158)
+               reduce_table.add new ReduceAction708(158)
+               reduce_table.add new ReduceAction709(158)
+               reduce_table.add new ReduceAction710(158)
+               reduce_table.add new ReduceAction487(159)
+               reduce_table.add new ReduceAction712(159)
+               reduce_table.add new ReduceAction713(159)
+               reduce_table.add new ReduceAction714(159)
+               reduce_table.add new ReduceAction510(159)
+               reduce_table.add new ReduceAction716(159)
+               reduce_table.add new ReduceAction511(159)
+               reduce_table.add new ReduceAction718(159)
+               reduce_table.add new ReduceAction512(159)
+               reduce_table.add new ReduceAction720(159)
+               reduce_table.add new ReduceAction513(159)
+               reduce_table.add new ReduceAction722(159)
+               reduce_table.add new ReduceAction514(159)
+               reduce_table.add new ReduceAction724(159)
+               reduce_table.add new ReduceAction515(159)
+               reduce_table.add new ReduceAction726(159)
+               reduce_table.add new ReduceAction516(159)
+               reduce_table.add new ReduceAction728(159)
+               reduce_table.add new ReduceAction517(159)
+               reduce_table.add new ReduceAction730(159)
+               reduce_table.add new ReduceAction518(159)
+               reduce_table.add new ReduceAction732(159)
+               reduce_table.add new ReduceAction519(159)
+               reduce_table.add new ReduceAction734(159)
+               reduce_table.add new ReduceAction520(159)
+               reduce_table.add new ReduceAction736(159)
+               reduce_table.add new ReduceAction521(159)
+               reduce_table.add new ReduceAction738(159)
+               reduce_table.add new ReduceAction522(159)
+               reduce_table.add new ReduceAction740(159)
+               reduce_table.add new ReduceAction523(159)
+               reduce_table.add new ReduceAction742(159)
+               reduce_table.add new ReduceAction524(159)
+               reduce_table.add new ReduceAction744(159)
+               reduce_table.add new ReduceAction525(159)
+               reduce_table.add new ReduceAction746(159)
+               reduce_table.add new ReduceAction747(159)
+               reduce_table.add new ReduceAction748(159)
+               reduce_table.add new ReduceAction749(159)
+               reduce_table.add new ReduceAction750(159)
+               reduce_table.add new ReduceAction751(159)
+               reduce_table.add new ReduceAction752(159)
+               reduce_table.add new ReduceAction753(159)
+               reduce_table.add new ReduceAction754(159)
+               reduce_table.add new ReduceAction755(159)
+               reduce_table.add new ReduceAction756(159)
+               reduce_table.add new ReduceAction757(159)
+               reduce_table.add new ReduceAction758(159)
+               reduce_table.add new ReduceAction487(160)
+               reduce_table.add new ReduceAction760(160)
+               reduce_table.add new ReduceAction761(160)
+               reduce_table.add new ReduceAction762(161)
+               reduce_table.add new ReduceAction763(161)
+               reduce_table.add new ReduceAction764(161)
+               reduce_table.add new ReduceAction765(161)
+               reduce_table.add new ReduceAction766(161)
+               reduce_table.add new ReduceAction767(161)
+               reduce_table.add new ReduceAction768(161)
+               reduce_table.add new ReduceAction769(161)
+               reduce_table.add new ReduceAction487(161)
+               reduce_table.add new ReduceAction771(161)
+               reduce_table.add new ReduceAction772(161)
+               reduce_table.add new ReduceAction773(161)
+               reduce_table.add new ReduceAction797(162)
+               reduce_table.add new ReduceAction798(162)
+               reduce_table.add new ReduceAction799(163)
+               reduce_table.add new ReduceAction49(163)
+               reduce_table.add new ReduceAction801(164)
+               reduce_table.add new ReduceAction802(164)
+               reduce_table.add new ReduceAction803(164)
+               reduce_table.add new ReduceAction804(164)
+               reduce_table.add new ReduceAction805(164)
+               reduce_table.add new ReduceAction806(164)
+               reduce_table.add new ReduceAction807(164)
+               reduce_table.add new ReduceAction808(164)
+               reduce_table.add new ReduceAction809(164)
+               reduce_table.add new ReduceAction810(164)
+               reduce_table.add new ReduceAction801(165)
+               reduce_table.add new ReduceAction802(165)
+               reduce_table.add new ReduceAction803(165)
+               reduce_table.add new ReduceAction804(165)
+               reduce_table.add new ReduceAction805(165)
+               reduce_table.add new ReduceAction806(165)
+               reduce_table.add new ReduceAction807(165)
+               reduce_table.add new ReduceAction808(165)
+               reduce_table.add new ReduceAction809(165)
+               reduce_table.add new ReduceAction810(165)
+               reduce_table.add new ReduceAction782(166)
+               reduce_table.add new ReduceAction783(166)
+               reduce_table.add new ReduceAction913(167)
+               reduce_table.add new ReduceAction487(167)
+               reduce_table.add new ReduceAction487(167)
+               reduce_table.add new ReduceAction916(167)
+               reduce_table.add new ReduceAction917(167)
+               reduce_table.add new ReduceAction918(167)
+               reduce_table.add new ReduceAction471(168)
+               reduce_table.add new ReduceAction472(168)
+               reduce_table.add new ReduceAction472(168)
+               reduce_table.add new ReduceAction474(169)
+               reduce_table.add new ReduceAction475(169)
+               reduce_table.add new ReduceAction487(170)
+               reduce_table.add new ReduceAction641(170)
+               reduce_table.add new ReduceAction487(171)
+               reduce_table.add new ReduceAction643(171)
+               reduce_table.add new ReduceAction644(171)
+               reduce_table.add new ReduceAction645(171)
+               reduce_table.add new ReduceAction646(171)
+               reduce_table.add new ReduceAction487(172)
+               reduce_table.add new ReduceAction648(172)
+               reduce_table.add new ReduceAction487(173)
+               reduce_table.add new ReduceAction650(173)
+               reduce_table.add new ReduceAction651(173)
+               reduce_table.add new ReduceAction652(173)
+               reduce_table.add new ReduceAction653(173)
+               reduce_table.add new ReduceAction654(173)
+               reduce_table.add new ReduceAction655(173)
+               reduce_table.add new ReduceAction656(173)
+               reduce_table.add new ReduceAction657(173)
+               reduce_table.add new ReduceAction487(174)
+               reduce_table.add new ReduceAction659(174)
+               reduce_table.add new ReduceAction487(175)
+               reduce_table.add new ReduceAction661(175)
+               reduce_table.add new ReduceAction487(176)
+               reduce_table.add new ReduceAction663(176)
+               reduce_table.add new ReduceAction487(177)
+               reduce_table.add new ReduceAction665(177)
+               reduce_table.add new ReduceAction666(177)
+               reduce_table.add new ReduceAction487(178)
+               reduce_table.add new ReduceAction668(178)
+               reduce_table.add new ReduceAction669(178)
+               reduce_table.add new ReduceAction487(179)
+               reduce_table.add new ReduceAction671(179)
+               reduce_table.add new ReduceAction672(179)
+               reduce_table.add new ReduceAction673(179)
+               reduce_table.add new ReduceAction487(180)
+               reduce_table.add new ReduceAction675(180)
+               reduce_table.add new ReduceAction487(181)
+               reduce_table.add new ReduceAction677(181)
+               reduce_table.add new ReduceAction678(181)
+               reduce_table.add new ReduceAction679(181)
+               reduce_table.add new ReduceAction680(181)
+               reduce_table.add new ReduceAction487(182)
+               reduce_table.add new ReduceAction682(182)
+               reduce_table.add new ReduceAction683(182)
+               reduce_table.add new ReduceAction1515(182)
+               reduce_table.add new ReduceAction1516(182)
+               reduce_table.add new ReduceAction1517(182)
+               reduce_table.add new ReduceAction1518(182)
+               reduce_table.add new ReduceAction1519(182)
+               reduce_table.add new ReduceAction1520(182)
+               reduce_table.add new ReduceAction1521(182)
+               reduce_table.add new ReduceAction1522(182)
+               reduce_table.add new ReduceAction1523(182)
+               reduce_table.add new ReduceAction487(183)
+               reduce_table.add new ReduceAction1525(183)
+               reduce_table.add new ReduceAction1526(183)
+               reduce_table.add new ReduceAction1527(183)
+               reduce_table.add new ReduceAction1528(183)
+               reduce_table.add new ReduceAction1529(183)
+               reduce_table.add new ReduceAction1530(183)
+               reduce_table.add new ReduceAction1531(183)
+               reduce_table.add new ReduceAction1532(183)
+               reduce_table.add new ReduceAction1533(183)
+               reduce_table.add new ReduceAction522(183)
+               reduce_table.add new ReduceAction740(183)
+               reduce_table.add new ReduceAction1536(183)
+               reduce_table.add new ReduceAction1537(183)
+               reduce_table.add new ReduceAction748(183)
+               reduce_table.add new ReduceAction749(183)
+               reduce_table.add new ReduceAction750(183)
+               reduce_table.add new ReduceAction751(183)
+               reduce_table.add new ReduceAction752(183)
+               reduce_table.add new ReduceAction753(183)
+               reduce_table.add new ReduceAction754(183)
+               reduce_table.add new ReduceAction755(183)
+               reduce_table.add new ReduceAction756(183)
+               reduce_table.add new ReduceAction757(183)
+               reduce_table.add new ReduceAction758(183)
+               reduce_table.add new ReduceAction487(184)
+               reduce_table.add new ReduceAction760(184)
+               reduce_table.add new ReduceAction761(184)
+               reduce_table.add new ReduceAction762(185)
+               reduce_table.add new ReduceAction763(185)
+               reduce_table.add new ReduceAction764(185)
+               reduce_table.add new ReduceAction765(185)
+               reduce_table.add new ReduceAction766(185)
+               reduce_table.add new ReduceAction767(185)
+               reduce_table.add new ReduceAction768(185)
+               reduce_table.add new ReduceAction769(185)
+               reduce_table.add new ReduceAction487(185)
+               reduce_table.add new ReduceAction771(185)
+               reduce_table.add new ReduceAction772(185)
+               reduce_table.add new ReduceAction773(185)
+               reduce_table.add new ReduceAction1564(186)
+               reduce_table.add new ReduceAction1565(186)
+               reduce_table.add new ReduceAction1566(186)
+               reduce_table.add new ReduceAction484(187)
+               reduce_table.add new ReduceAction485(187)
+               reduce_table.add new ReduceAction486(187)
+               reduce_table.add new ReduceAction487(187)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction495(188)
+               reduce_table.add new ReduceAction496(188)
+               reduce_table.add new ReduceAction497(188)
+               reduce_table.add new ReduceAction498(188)
+               reduce_table.add new ReduceAction499(188)
+               reduce_table.add new ReduceAction500(188)
+               reduce_table.add new ReduceAction501(188)
+               reduce_table.add new ReduceAction502(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction487(188)
+               reduce_table.add new ReduceAction510(188)
+               reduce_table.add new ReduceAction511(188)
+               reduce_table.add new ReduceAction512(188)
+               reduce_table.add new ReduceAction513(188)
+               reduce_table.add new ReduceAction514(188)
+               reduce_table.add new ReduceAction515(188)
+               reduce_table.add new ReduceAction516(188)
+               reduce_table.add new ReduceAction517(188)
+               reduce_table.add new ReduceAction518(188)
+               reduce_table.add new ReduceAction519(188)
+               reduce_table.add new ReduceAction520(188)
+               reduce_table.add new ReduceAction521(188)
+               reduce_table.add new ReduceAction522(188)
+               reduce_table.add new ReduceAction523(188)
+               reduce_table.add new ReduceAction524(188)
+               reduce_table.add new ReduceAction525(188)
+               reduce_table.add new ReduceAction526(188)
+               reduce_table.add new ReduceAction527(188)
+               reduce_table.add new ReduceAction526(188)
+               reduce_table.add new ReduceAction529(188)
+               reduce_table.add new ReduceAction530(188)
+               reduce_table.add new ReduceAction529(188)
+               reduce_table.add new ReduceAction532(188)
+               reduce_table.add new ReduceAction533(188)
+               reduce_table.add new ReduceAction532(188)
+               reduce_table.add new ReduceAction535(188)
+               reduce_table.add new ReduceAction609(189)
+               reduce_table.add new ReduceAction610(189)
+               reduce_table.add new ReduceAction611(189)
+               reduce_table.add new ReduceAction612(190)
+               reduce_table.add new ReduceAction621(191)
+               reduce_table.add new ReduceAction622(191)
+               reduce_table.add new ReduceAction623(192)
+               reduce_table.add new ReduceAction624(192)
+               reduce_table.add new ReduceAction625(193)
+               reduce_table.add new ReduceAction626(193)
+               reduce_table.add new ReduceAction630(194)
+               reduce_table.add new ReduceAction631(194)
+               reduce_table.add new ReduceAction635(195)
+               reduce_table.add new ReduceAction636(195)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction495(196)
+               reduce_table.add new ReduceAction496(196)
+               reduce_table.add new ReduceAction497(196)
+               reduce_table.add new ReduceAction498(196)
+               reduce_table.add new ReduceAction499(196)
+               reduce_table.add new ReduceAction500(196)
+               reduce_table.add new ReduceAction501(196)
+               reduce_table.add new ReduceAction502(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction487(196)
+               reduce_table.add new ReduceAction510(196)
+               reduce_table.add new ReduceAction511(196)
+               reduce_table.add new ReduceAction512(196)
+               reduce_table.add new ReduceAction513(196)
+               reduce_table.add new ReduceAction514(196)
+               reduce_table.add new ReduceAction515(196)
+               reduce_table.add new ReduceAction516(196)
+               reduce_table.add new ReduceAction517(196)
+               reduce_table.add new ReduceAction518(196)
+               reduce_table.add new ReduceAction519(196)
+               reduce_table.add new ReduceAction520(196)
+               reduce_table.add new ReduceAction521(196)
+               reduce_table.add new ReduceAction522(196)
+               reduce_table.add new ReduceAction523(196)
+               reduce_table.add new ReduceAction524(196)
+               reduce_table.add new ReduceAction525(196)
+               reduce_table.add new ReduceAction526(196)
+               reduce_table.add new ReduceAction527(196)
+               reduce_table.add new ReduceAction526(196)
+               reduce_table.add new ReduceAction529(196)
+               reduce_table.add new ReduceAction530(196)
+               reduce_table.add new ReduceAction529(196)
+               reduce_table.add new ReduceAction532(196)
+               reduce_table.add new ReduceAction533(196)
+               reduce_table.add new ReduceAction532(196)
+               reduce_table.add new ReduceAction535(196)
+               reduce_table.add new ReduceAction484(197)
+               reduce_table.add new ReduceAction485(197)
+               reduce_table.add new ReduceAction486(197)
+               reduce_table.add new ReduceAction484(198)
+               reduce_table.add new ReduceAction485(198)
+               reduce_table.add new ReduceAction486(198)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction495(199)
+               reduce_table.add new ReduceAction496(199)
+               reduce_table.add new ReduceAction497(199)
+               reduce_table.add new ReduceAction498(199)
+               reduce_table.add new ReduceAction499(199)
+               reduce_table.add new ReduceAction500(199)
+               reduce_table.add new ReduceAction501(199)
+               reduce_table.add new ReduceAction502(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction487(199)
+               reduce_table.add new ReduceAction535(199)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction495(200)
+               reduce_table.add new ReduceAction496(200)
+               reduce_table.add new ReduceAction497(200)
+               reduce_table.add new ReduceAction498(200)
+               reduce_table.add new ReduceAction499(200)
+               reduce_table.add new ReduceAction500(200)
+               reduce_table.add new ReduceAction501(200)
+               reduce_table.add new ReduceAction502(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction487(200)
+               reduce_table.add new ReduceAction535(200)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction495(201)
+               reduce_table.add new ReduceAction496(201)
+               reduce_table.add new ReduceAction497(201)
+               reduce_table.add new ReduceAction498(201)
+               reduce_table.add new ReduceAction499(201)
+               reduce_table.add new ReduceAction500(201)
+               reduce_table.add new ReduceAction501(201)
+               reduce_table.add new ReduceAction502(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction487(201)
+               reduce_table.add new ReduceAction535(201)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction495(202)
+               reduce_table.add new ReduceAction496(202)
+               reduce_table.add new ReduceAction497(202)
+               reduce_table.add new ReduceAction498(202)
+               reduce_table.add new ReduceAction499(202)
+               reduce_table.add new ReduceAction500(202)
+               reduce_table.add new ReduceAction501(202)
+               reduce_table.add new ReduceAction502(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction487(202)
+               reduce_table.add new ReduceAction535(202)
+               reduce_table.add new ReduceAction920(203)
+               reduce_table.add new ReduceAction922(203)
+               reduce_table.add new ReduceAction960(204)
+               reduce_table.add new ReduceAction961(204)
+               reduce_table.add new ReduceAction50(204)
+               reduce_table.add new ReduceAction1750(205)
+               reduce_table.add new ReduceAction1751(205)
+               reduce_table.add new ReduceAction1752(206)
+               reduce_table.add new ReduceAction1753(206)
+               reduce_table.add new ReduceAction1754(207)
+               reduce_table.add new ReduceAction1755(207)
+               reduce_table.add new ReduceAction100(208)
+               reduce_table.add new ReduceAction1757(208)
+               reduce_table.add new ReduceAction117(209)
+               reduce_table.add new ReduceAction1759(209)
+               reduce_table.add new ReduceAction821(210)
+               reduce_table.add new ReduceAction1761(210)
+               reduce_table.add new ReduceAction1762(211)
+               reduce_table.add new ReduceAction1763(211)
+               reduce_table.add new ReduceAction1764(212)
+               reduce_table.add new ReduceAction1765(212)
+               reduce_table.add new ReduceAction478(213)
+               reduce_table.add new ReduceAction1767(213)
+               reduce_table.add new ReduceAction782(214)
+               reduce_table.add new ReduceAction1769(214)
+               reduce_table.add new ReduceAction782(215)
+               reduce_table.add new ReduceAction1769(215)
+               reduce_table.add new ReduceAction782(216)
+               reduce_table.add new ReduceAction1769(216)
+               reduce_table.add new ReduceAction408(217)
+               reduce_table.add new ReduceAction1775(217)
+               reduce_table.add new ReduceAction821(218)
+               reduce_table.add new ReduceAction1761(218)
+               reduce_table.add new ReduceAction782(219)
+               reduce_table.add new ReduceAction1769(219)
+               reduce_table.add new ReduceAction782(220)
+               reduce_table.add new ReduceAction1769(220)
+               reduce_table.add new ReduceAction935(221)
+               reduce_table.add new ReduceAction1783(221)
+               reduce_table.add new ReduceAction1784(222)
+               reduce_table.add new ReduceAction1785(222)
+               reduce_table.add new ReduceAction957(223)
+               reduce_table.add new ReduceAction976(223)
                return reduce_table
        end
 end
@@ -1639,8 +2311,6 @@ private class ReduceAction16
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -1649,23 +2319,22 @@ private class ReduceAction16
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmodulenode5 = nodearraylist4
-                                       assert tkwmodulenode5 isa nullable TKwmodule
-                                       var pmodulenamenode6 = nodearraylist6
-                                       assert pmodulenamenode6 isa nullable AModuleName
-                                       var pannotationsnode7 = nodearraylist7
-                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmodulenode6 = nodearraylist2
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist4
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist5
+                                       assert pannotationsnode8 isa nullable AAnnotations
                                        var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwmodulenode5,
-                                               pmodulenamenode6,
-                                               pannotationsnode7
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
                                        node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
@@ -1684,21 +2353,28 @@ private class ReduceAction17
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode2 = nodearraylist3
-                                       assert pvisibilitynode2 isa nullable AVisibility
-                                       var tkwimportnode3 = nodearraylist4
-                                       assert tkwimportnode3 isa nullable TKwimport
-                                       var pmodulenamenode4 = nodearraylist6
-                                       assert pmodulenamenode4 isa nullable AModuleName
-                                       var pannotationsnode5 = nodearraylist7
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
-                                               pvisibilitynode2,
-                                               tkwimportnode3,
-                                               pmodulenamenode4,
-                                               pannotationsnode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist4
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist6
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pimportnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
@@ -1707,6 +2383,7 @@ private class ReduceAction18
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -1714,18 +2391,28 @@ private class ReduceAction18
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode2 = nodearraylist3
-                                       assert pvisibilitynode2 isa nullable AVisibility
-                                       var tkwimportnode3 = nodearraylist4
-                                       assert tkwimportnode3 isa nullable TKwimport
-                                       var tkwendnode4 = nodearraylist6
-                                       assert tkwendnode4 isa nullable TKwend
-                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
-                                               pvisibilitynode2,
-                                               tkwimportnode3,
-                                               tkwendnode4
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist4
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist6
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pimportnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
@@ -1734,9 +2421,36 @@ private class ReduceAction19
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pclassdefnode1 = nodearraylist1
-                                       node_list = pclassdefnode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist4
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist6
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
@@ -1745,18 +2459,36 @@ private class ReduceAction20
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa nullable APropdef
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
-                                       end
-                                       var pclassdefnode1: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
-                                               listnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist4
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist6
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
@@ -1765,61 +2497,44 @@ private class ReduceAction21
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa nullable APropdef
-                                       if ppropdefnode2 != null then
-                                               listnode3.add(ppropdefnode2)
-                                       end
-                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
-                                               listnode3
-                                       )
-                                       node_list = pclassdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction22
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       node_list = null
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction23
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       node_list = null
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction24
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
-                                               null,
-                                               pexprnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwmodulenode6 = nodearraylist3
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist5
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction26
+private class ReduceAction22
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -1828,41 +2543,34 @@ private class ReduceAction26
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var pqclassidnode6 = nodearraylist6
-                                       assert pqclassidnode6 isa nullable AQclassid
-                                       var listnode11 = nodearraylist7
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist8
-                                       assert tkwendnode13 isa nullable TKwend
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist5
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist7
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               pqclassidnode6,
-                                               null,
-                                               listnode8,
-                                               null,
-                                               null,
-                                               listnode12,
-                                               tkwendnode13
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction27
+private class ReduceAction23
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -1876,50 +2584,38 @@ private class ReduceAction27
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var pqclassidnode6 = nodearraylist6
-                                       assert pqclassidnode6 isa nullable AQclassid
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var listnode11 = nodearraylist8
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist9
-                                       assert tkwendnode13 isa nullable TKwend
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist5
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist7
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               pqclassidnode6,
-                                               null,
-                                               listnode8,
-                                               null,
-                                               pexterncodeblocknode10,
-                                               listnode12,
-                                               tkwendnode13
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction28
+private class ReduceAction24
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -1929,56 +2625,38 @@ private class ReduceAction28
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode9 = new Array[Object]
-                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var pqclassidnode6 = nodearraylist6
-                                       assert pqclassidnode6 isa nullable AQclassid
-                                       var tobranode7 = nodearraylist7
-                                       assert tobranode7 isa nullable TObra
-                                       var listnode8 = nodearraylist9
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var tcbranode10 = nodearraylist10
-                                       assert tcbranode10 isa nullable TCbra
-                                       var listnode12 = nodearraylist11
-                                       assert listnode12 isa Array[Object]
-                                       listnode13 = concat(listnode13, listnode12)
-                                       var tkwendnode14 = nodearraylist12
-                                       assert tkwendnode14 isa nullable TKwend
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist5
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist7
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               pqclassidnode6,
-                                               tobranode7,
-                                               listnode9,
-                                               tcbranode10,
-                                               null,
-                                               listnode13,
-                                               tkwendnode14
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction29
+private class ReduceAction25
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist13 = p.pop
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -1988,261 +2666,427 @@ private class ReduceAction29
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode9 = new Array[Object]
-                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa nullable AClasskind
-                                       var pqclassidnode6 = nodearraylist6
-                                       assert pqclassidnode6 isa nullable AQclassid
-                                       var tobranode7 = nodearraylist7
-                                       assert tobranode7 isa nullable TObra
-                                       var listnode8 = nodearraylist9
-                                       assert listnode8 isa Array[Object]
-                                       listnode9 = concat(listnode9, listnode8)
-                                       var tcbranode10 = nodearraylist10
-                                       assert tcbranode10 isa nullable TCbra
-                                       var pexterncodeblocknode11 = nodearraylist11
-                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
-                                       var listnode12 = nodearraylist12
-                                       assert listnode12 isa Array[Object]
-                                       listnode13 = concat(listnode13, listnode12)
-                                       var tkwendnode14 = nodearraylist13
-                                       assert tkwendnode14 isa nullable TKwend
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmodulenode6 = nodearraylist5
+                                       assert tkwmodulenode6 isa nullable TKwmodule
+                                       var pmodulenamenode7 = nodearraylist7
+                                       assert pmodulenamenode7 isa nullable AModuleName
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               pclasskindnode5,
-                                               pqclassidnode6,
-                                               tobranode7,
-                                               listnode9,
-                                               tcbranode10,
-                                               pexterncodeblocknode11,
-                                               listnode13,
-                                               tkwendnode14
+                                               tkwmodulenode6,
+                                               pmodulenamenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pclassdefnode1
+                                       node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction31
+private class ReduceAction26
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode1 = nodearraylist1
-                                       node_list = tkwredefnode1
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwimportnode4 = nodearraylist2
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist4
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist5
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction32
+private class ReduceAction27
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwclassnode2 = nodearraylist1
-                                       assert tkwclassnode2 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
-                                               tkwclassnode2
+                                       var tkwpublicnode3 = nodearraylist2
+                                       assert tkwpublicnode3 isa nullable TKwpublic
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode3
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist6
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction33
+private class ReduceAction28
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa nullable TKwabstract
-                                       var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
-                                               tkwabstractnode2,
-                                               tkwclassnode3
+                                       var tkwprivatenode3 = nodearraylist2
+                                       assert tkwprivatenode3 isa nullable TKwprivate
+                                       var pvisibilitynode2: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode3
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist6
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction34
+private class ReduceAction29
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwinterfacenode2 = nodearraylist1
-                                       assert tkwinterfacenode2 isa nullable TKwinterface
-                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
-                                               tkwinterfacenode2
+                                       var tkwprotectednode3 = nodearraylist2
+                                       assert tkwprotectednode3 isa nullable TKwprotected
+                                       var pvisibilitynode2: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode3
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist6
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction35
+private class ReduceAction30
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwenumnode2 = nodearraylist1
-                                       assert tkwenumnode2 isa nullable TKwenum
-                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
-                                               tkwenumnode2
+                                       var tkwintrudenode3 = nodearraylist2
+                                       assert tkwintrudenode3 isa nullable TKwintrude
+                                       var pvisibilitynode2: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode3
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist6
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction36
+private class ReduceAction31
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwexternnode2 = nodearraylist1
-                                       assert tkwexternnode2 isa nullable TKwextern
-                                       var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
-                                               tkwexternnode2,
-                                               tkwclassnode3
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist3
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist5
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist6
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction37
+private class ReduceAction32
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwsubsetnode2 = nodearraylist1
-                                       assert tkwsubsetnode2 isa nullable TKwsubset
-                                       var pclasskindnode1: nullable ASubsetClasskind = new ASubsetClasskind.init_asubsetclasskind(
-                                               tkwsubsetnode2
+                                       var tkwpublicnode3 = nodearraylist3
+                                       assert tkwpublicnode3 isa nullable TKwpublic
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode3
                                        )
-                                       node_list = pclasskindnode1
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist7
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction38
+private class ReduceAction33
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist1
-                                       if pformaldefnode1 != null then
-                                               listnode2.add(pformaldefnode1)
-                                       end
-                                       node_list = listnode2
+                                       var tkwprivatenode3 = nodearraylist3
+                                       assert tkwprivatenode3 isa nullable TKwprivate
+                                       var pvisibilitynode2: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode3
+                                       )
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist7
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction39
+private class ReduceAction34
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pformaldefnode1 != null then
-                                               listnode3.add(pformaldefnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction40
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
+                                       var tkwprotectednode3 = nodearraylist3
+                                       assert tkwprotectednode3 isa nullable TKwprotected
+                                       var pvisibilitynode2: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode3
+                                       )
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist7
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction41
+private class ReduceAction35
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pformaldefnode1 = nodearraylist3
-                                       node_list = pformaldefnode1
+                                       var tkwintrudenode3 = nodearraylist3
+                                       assert tkwintrudenode3 isa nullable TKwintrude
+                                       var pvisibilitynode2: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode3
+                                       )
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var pmodulenamenode5 = nodearraylist7
+                                       assert pmodulenamenode5 isa nullable AModuleName
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               pmodulenamenode5,
+                                               pannotationsnode6
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction42
+private class ReduceAction36
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               ptypenode3,
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       node_list = pformaldefnode1
+                                       var tkwimportnode4 = nodearraylist2
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist4
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction43
+private class ReduceAction37
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var pannotationsnode4 = nodearraylist2
-                                       assert pannotationsnode4 isa nullable AAnnotations
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               ptypenode3,
-                                               pannotationsnode4
+                                       var tkwpublicnode3 = nodearraylist2
+                                       assert tkwpublicnode3 isa nullable TKwpublic
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode3
                                        )
-                                       node_list = pformaldefnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist6
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction44
+private class ReduceAction38
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2254,90 +3098,59 @@ private class ReduceAction44
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwsupernode5 = nodearraylist4
-                                       assert tkwsupernode5 isa nullable TKwsuper
-                                       var ptypenode6 = nodearraylist6
-                                       assert ptypenode6 isa nullable AType
-                                       var pannotationsnode7 = nodearraylist7
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwsupernode5,
-                                               ptypenode6,
-                                               pannotationsnode7
+                                       var tkwprivatenode3 = nodearraylist2
+                                       assert tkwprivatenode3 isa nullable TKwprivate
+                                       var pvisibilitynode2: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode3
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist6
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction45
+private class ReduceAction39
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction46
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var ppropdefnode1 = nodearraylist1
-                                       if ppropdefnode1 != null then
-                                               listnode2.add(ppropdefnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction47
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode1 = new Array[Object]
-                                       node_list = listnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction48
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
-                                       node_list = ppropdefnode1
+                                       var tkwprotectednode3 = nodearraylist2
+                                       assert tkwprotectednode3 isa nullable TKwprotected
+                                       var pvisibilitynode2: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode3
+                                       )
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist6
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction49
+private class ReduceAction40
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2345,106 +3158,57 @@ private class ReduceAction49
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var tkwdonode14 = nodearraylist7
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist8
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist9
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               null,
-                                               null,
-                                               null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               null,
-                                               null,
-                                               null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                       var tkwintrudenode3 = nodearraylist2
+                                       assert tkwintrudenode3 isa nullable TKwintrude
+                                       var pvisibilitynode2: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode3
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwimportnode4 = nodearraylist4
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist6
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction50
+private class ReduceAction41
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var tkwdonode14 = nodearraylist8
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist10
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               null,
-                                               null,
-                                               null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               null,
-                                               null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwimportnode4 = nodearraylist3
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist5
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction51
+private class ReduceAction42
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2452,46 +3216,30 @@ private class ReduceAction51
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               null,
-                                               null,
-                                               null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               null,
-                                               null,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwpublicnode3 = nodearraylist3
+                                       assert tkwpublicnode3 isa nullable TKwpublic
+                                       var pvisibilitynode2: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode3
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist7
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction52
+private class ReduceAction43
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2499,49 +3247,25 @@ private class ReduceAction52
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwisanode7 = nodearraylist4
-                                       assert tkwisanode7 isa nullable TKwisa
-                                       var listnode12 = new Array[Object]
-                                       var psignaturenode10: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode12,
-                                               null,
-                                               null
+                                       var tkwprivatenode3 = nodearraylist3
+                                       assert tkwprivatenode3 isa nullable TKwprivate
+                                       var pvisibilitynode2: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode3
                                        )
-                                       var tkwdonode18 = nodearraylist5
-                                       assert tkwdonode18 isa nullable TKwdo
-                                       var pexprnode19 = nodearraylist6
-                                       assert pexprnode19 isa nullable AExpr
-                                       var tkwendnode20 = nodearraylist7
-                                       assert tkwendnode20 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               null,
-                                               tkwisanode7,
-                                               null,
-                                               null,
-                                               psignaturenode10,
-                                               null,
-                                               null,
-                                               null,
-                                               tkwdonode18,
-                                               pexprnode19,
-                                               tkwendnode20
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist7
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction53
+private class ReduceAction44
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2554,250 +3278,244 @@ private class ReduceAction53
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwisanode7 = nodearraylist4
-                                       assert tkwisanode7 isa nullable TKwisa
-                                       var listnode12 = new Array[Object]
-                                       var psignaturenode10: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode12,
-                                               null,
-                                               null
+                                       var tkwprotectednode3 = nodearraylist3
+                                       assert tkwprotectednode3 isa nullable TKwprotected
+                                       var pvisibilitynode2: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode3
                                        )
-                                       var pannotationsnode15 = nodearraylist5
-                                       assert pannotationsnode15 isa nullable AAnnotations
-                                       var tkwdonode18 = nodearraylist6
-                                       assert tkwdonode18 isa nullable TKwdo
-                                       var pexprnode19 = nodearraylist7
-                                       assert pexprnode19 isa nullable AExpr
-                                       var tkwendnode20 = nodearraylist8
-                                       assert tkwendnode20 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               null,
-                                               tkwisanode7,
-                                               null,
-                                               null,
-                                               psignaturenode10,
-                                               pannotationsnode15,
-                                               null,
-                                               null,
-                                               tkwdonode18,
-                                               pexprnode19,
-                                               tkwendnode20
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist7
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction54
+private class ReduceAction45
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist6
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               null,
-                                               null,
-                                               tkwnewnode8,
-                                               null,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               null,
-                                               null,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwintrudenode3 = nodearraylist3
+                                       assert tkwintrudenode3 isa nullable TKwintrude
+                                       var pvisibilitynode2: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode3
                                        )
-                                       node_list = ppropdefnode1
+                                       var tkwimportnode4 = nodearraylist5
+                                       assert tkwimportnode4 isa nullable TKwimport
+                                       var tkwendnode5 = nodearraylist7
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction55
+private class ReduceAction46
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               null,
-                                               null,
-                                               tkwnewnode8,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               null,
-                                               null,
-                                               null,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var pclassdefnode1 = nodearraylist1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction56
+private class ReduceAction47
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var tkwdonode14 = nodearraylist6
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist7
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist8
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               null,
-                                               null,
-                                               tkwnewnode8,
-                                               null,
-                                               psignaturenode10,
+                                       var listnode3 = new Array[Object]
+                                       var ppropdefnode2 = nodearraylist1
+                                       assert ppropdefnode2 isa nullable APropdef
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
+                                       end
+                                       var pclassdefnode1: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
+                                               listnode3
+                                       )
+                                       node_list = pclassdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction48
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var ppropdefnode2 = nodearraylist1
+                                       assert ppropdefnode2 isa nullable APropdef
+                                       if ppropdefnode2 != null then
+                                               listnode3.add(ppropdefnode2)
+                                       end
+                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
+                                               listnode3
+                                       )
+                                       node_list = pclassdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction49
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       node_list = null
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction50
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       node_list = null
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction51
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode5,
+                                               null
+                                       )
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
+                                               pexprnode3
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction52
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+                                       if pexprnode4 != null then
+                                               listnode6.add(pexprnode4)
+                                       end
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode6,
+                                               null
+                                       )
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
+                                               pexprnode3
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction53
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               pexprnode3
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction57
+private class ReduceAction54
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var tkwdonode14 = nodearraylist7
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist8
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist9
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist2
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist4
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist5
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist6
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               tkwnewnode8,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               null,
+                                               listnode9,
                                                null,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction58
+private class ReduceAction55
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2806,52 +3524,46 @@ private class ReduceAction58
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist6
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var tkwdonode14 = nodearraylist7
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist8
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist9
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               tkwnewnode8,
-                                               null,
-                                               psignaturenode10,
-                                               pannotationsnode11,
+                                               listnode9,
                                                null,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction59
+private class ReduceAction56
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2860,48 +3572,42 @@ private class ReduceAction59
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var tkwdonode14 = nodearraylist8
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist10
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               tkwnewnode8,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
+                                               listnode9,
                                                null,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction60
+private class ReduceAction57
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -2914,49 +3620,46 @@ private class ReduceAction60
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pexterncallsnode12 = nodearraylist7
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist8
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               null,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
+                                               listnode9,
                                                null,
                                                null,
-                                               null
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction61
+private class ReduceAction58
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -2965,46 +3668,42 @@ private class ReduceAction61
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var pexterncallsnode12 = nodearraylist8
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist9
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               null,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
+                                               listnode9,
                                                null,
                                                null,
-                                               null
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction62
+private class ReduceAction59
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3016,44 +3715,46 @@ private class ReduceAction62
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var pannotationsnode10 = nodearraylist7
-                                       assert pannotationsnode10 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist3
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist6
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist7
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               null,
-                                               pannotationsnode10,
+                                               listnode9,
                                                null,
                                                null,
-                                               null
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction63
+private class ReduceAction60
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3063,47 +3764,49 @@ private class ReduceAction63
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var tassignnode8 = nodearraylist7
-                                       assert tassignnode8 isa nullable TAssign
-                                       var pexprnode9 = nodearraylist9
-                                       assert pexprnode9 isa nullable AExpr
-                                       var pannotationsnode10 = nodearraylist10
-                                       assert pannotationsnode10 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
-                                               tassignnode8,
-                                               pexprnode9,
-                                               pannotationsnode10,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               null
+                                               null,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction64
+private class ReduceAction61
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3112,41 +3815,44 @@ private class ReduceAction64
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var tkwdonode11 = nodearraylist7
-                                       assert tkwdonode11 isa nullable TKwdo
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
                                                null,
-                                               tkwdonode11,
-                                               pexprnode12,
-                                               null
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction65
+private class ReduceAction62
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3160,43 +3866,44 @@ private class ReduceAction65
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var pannotationsnode10 = nodearraylist7
-                                       assert pannotationsnode10 isa nullable AAnnotations
-                                       var tkwdonode11 = nodearraylist8
-                                       assert tkwdonode11 isa nullable TKwdo
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               pannotationsnode10,
-                                               tkwdonode11,
-                                               pexprnode12,
-                                               null
+                                               null,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction66
+private class ReduceAction63
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3210,50 +3917,48 @@ private class ReduceAction66
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var tkwdonode11 = nodearraylist7
-                                       assert tkwdonode11 isa nullable TKwdo
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa nullable AExpr
-                                       var tkwendnode13 = nodearraylist9
-                                       assert tkwendnode13 isa nullable TKwend
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
                                                null,
-                                               tkwdonode11,
-                                               pexprnode12,
-                                               tkwendnode13
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction67
+private class ReduceAction64
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3261,49 +3966,47 @@ private class ReduceAction67
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwvarnode5 = nodearraylist4
-                                       assert tkwvarnode5 isa nullable TKwvar
-                                       var tidnode6 = nodearraylist5
-                                       assert tidnode6 isa nullable TId
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var pannotationsnode10 = nodearraylist7
-                                       assert pannotationsnode10 isa nullable AAnnotations
-                                       var tkwdonode11 = nodearraylist8
-                                       assert tkwdonode11 isa nullable TKwdo
-                                       var pexprnode12 = nodearraylist9
-                                       assert pexprnode12 isa nullable AExpr
-                                       var tkwendnode13 = nodearraylist10
-                                       assert tkwendnode13 isa nullable TKwend
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist2
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist4
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist5
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist6
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist7
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
+                                               null,
                                                pvisibilitynode4,
-                                               tkwvarnode5,
-                                               tidnode6,
-                                               ptypenode7,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               pannotationsnode10,
-                                               tkwdonode11,
-                                               pexprnode12,
-                                               tkwendnode13
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction68
+private class ReduceAction65
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3312,44 +4015,44 @@ private class ReduceAction68
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode6 = nodearraylist4
-                                       assert tkwinitnode6 isa nullable TKwinit
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var tkwdonode14 = nodearraylist6
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist7
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist8
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist7
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               tkwinitnode6,
-                                               null,
-                                               null,
-                                               null,
-                                               psignaturenode10,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction69
+private class ReduceAction66
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3363,46 +4066,44 @@ private class ReduceAction69
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode6 = nodearraylist4
-                                       assert tkwinitnode6 isa nullable TKwinit
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var tkwdonode14 = nodearraylist7
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist8
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist9
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist7
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               tkwinitnode6,
-                                               null,
-                                               null,
-                                               pmethidnode9,
-                                               psignaturenode10,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction70
+private class ReduceAction67
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3416,51 +4117,48 @@ private class ReduceAction70
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode6 = nodearraylist4
-                                       assert tkwinitnode6 isa nullable TKwinit
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist6
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var tkwdonode14 = nodearraylist7
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist8
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist9
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist7
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               tkwinitnode6,
-                                               null,
                                                null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               null,
+                                               listnode9,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction71
+private class ReduceAction68
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3470,52 +4168,49 @@ private class ReduceAction71
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode6 = nodearraylist4
-                                       assert tkwinitnode6 isa nullable TKwinit
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var tkwdonode14 = nodearraylist8
-                                       assert tkwdonode14 isa nullable TKwdo
-                                       var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa nullable AExpr
-                                       var tkwendnode16 = nodearraylist10
-                                       assert tkwendnode16 isa nullable TKwend
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist7
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               null,
-                                               tkwinitnode6,
-                                               null,
                                                null,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               tkwdonode14,
-                                               pexprnode15,
-                                               tkwendnode16
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction72
+private class ReduceAction69
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3523,38 +4218,51 @@ private class ReduceAction72
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var pqclassidnode6 = nodearraylist5
-                                       assert pqclassidnode6 isa nullable AQclassid
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var pannotationsnode8 = nodearraylist7
-                                       assert pannotationsnode8 isa nullable AAnnotations
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist3
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist6
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwtypenode5,
-                                               pqclassidnode6,
-                                               ptypenode7,
-                                               pannotationsnode8
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction73
+private class ReduceAction70
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3562,46 +4270,52 @@ private class ReduceAction73
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pexterncallsnode12 = nodearraylist6
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist7
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist8
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               null,
-                                               tkwnewnode8,
-                                               null,
-                                               psignaturenode10,
-                                               null,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
-                                               null,
-                                               null,
-                                               null
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction74
+private class ReduceAction71
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3610,48 +4324,52 @@ private class ReduceAction74
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pexterncallsnode12 = nodearraylist7
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist8
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist8
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               null,
-                                               tkwnewnode8,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               null,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
-                                               null,
-                                               null,
-                                               null
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction75
+private class ReduceAction72
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3660,48 +4378,51 @@ private class ReduceAction75
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var psignaturenode10 = nodearraylist5
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist6
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var pexterncallsnode12 = nodearraylist7
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist8
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist8
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               null,
-                                               tkwnewnode8,
-                                               null,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
-                                               null,
-                                               null,
-                                               null
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction76
+private class ReduceAction73
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3711,980 +4432,2004 @@ private class ReduceAction76
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode8 = nodearraylist4
-                                       assert tkwnewnode8 isa nullable TKwnew
-                                       var pmethidnode9 = nodearraylist5
-                                       assert pmethidnode9 isa nullable AMethid
-                                       var psignaturenode10 = nodearraylist6
-                                       assert psignaturenode10 isa nullable ASignature
-                                       var pannotationsnode11 = nodearraylist7
-                                       assert pannotationsnode11 isa nullable AAnnotations
-                                       var pexterncallsnode12 = nodearraylist8
-                                       assert pexterncallsnode12 isa nullable AExternCalls
-                                       var pexterncodeblocknode13 = nodearraylist9
-                                       assert pexterncodeblocknode13 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var pexterncodeblocknode11 = nodearraylist8
+                                       assert pexterncodeblocknode11 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
                                                null,
+                                               listnode9,
                                                null,
-                                               null,
-                                               tkwnewnode8,
-                                               pmethidnode9,
-                                               psignaturenode10,
-                                               pannotationsnode11,
-                                               pexterncallsnode12,
-                                               pexterncodeblocknode13,
-                                               null,
-                                               null,
-                                               null
+                                               pexterncodeblocknode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction77
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction79
+private class ReduceAction74
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwisnode2 = nodearraylist1
-                                       assert tkwisnode2 isa nullable TKwis
-                                       var listnode5 = nodearraylist2
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
-                                               tkwisnode2,
-                                               null,
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist2
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist4
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist5
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist8
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist9
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist10
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
                                                null,
-                                               listnode6,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
                                                null,
-                                               null
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pannotationsnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction80
+private class ReduceAction75
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwisnode2 = nodearraylist1
-                                       assert tkwisnode2 isa nullable TKwis
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tkwendnode8 = nodearraylist4
-                                       assert tkwendnode8 isa nullable TKwend
-                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
-                                               tkwisnode2,
-                                               null,
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist11
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
                                                null,
-                                               listnode6,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
                                                null,
-                                               tkwendnode8
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pannotationsnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction83
+private class ReduceAction76
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwisnode2 = nodearraylist1
-                                       assert tkwisnode2 isa nullable TKwis
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
-                                               tkwisnode2,
-                                               null,
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist11
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
                                                null,
-                                               listnode6,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
                                                null,
-                                               null
-                                       )
-                                       node_list = pannotationsnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction84
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
-                                               null
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction85
+private class ReduceAction77
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwpublicnode2 = nodearraylist1
-                                       assert tkwpublicnode2 isa nullable TKwpublic
-                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
-                                               tkwpublicnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist11
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction86
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa nullable TKwprivate
-                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
-                                               tkwprivatenode2
-                                       )
-                                       node_list = pvisibilitynode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction87
+private class ReduceAction78
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa nullable TKwprotected
-                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
-                                               tkwprotectednode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist11
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction88
+private class ReduceAction79
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa nullable TKwintrude
-                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
-                                               tkwintrudenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var pclasskindnode6 = nodearraylist3
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist6
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist8
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist9
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist10
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist11
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction89
+private class ReduceAction80
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa nullable TPlus
-                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
-                                               tplusnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction90
+private class ReduceAction81
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
-                                               tminusnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction91
+private class ReduceAction82
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa nullable TStar
-                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
-                                               tstarnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction92
+private class ReduceAction83
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstarstarnode2 = nodearraylist1
-                                       assert tstarstarnode2 isa nullable TStarstar
-                                       var pmethidnode1: nullable AStarstarMethid = new AStarstarMethid.init_astarstarmethid(
-                                               tstarstarnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               null,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction93
+private class ReduceAction84
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa nullable TSlash
-                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
-                                               tslashnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       var pclasskindnode6 = nodearraylist2
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist4
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist5
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist7
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist8
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist9
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist10
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist11
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction94
+private class ReduceAction85
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa nullable TPercent
-                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
-                                               tpercentnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist11
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction95
+private class ReduceAction86
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpipenode2 = nodearraylist1
-                                       assert tpipenode2 isa nullable TPipe
-                                       var pmethidnode1: nullable APipeMethid = new APipeMethid.init_apipemethid(
-                                               tpipenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist11
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction96
+private class ReduceAction87
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tcaretnode2 = nodearraylist1
-                                       assert tcaretnode2 isa nullable TCaret
-                                       var pmethidnode1: nullable ACaretMethid = new ACaretMethid.init_acaretmethid(
-                                               tcaretnode2
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist11
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction97
+private class ReduceAction88
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tampnode2 = nodearraylist1
-                                       assert tampnode2 isa nullable TAmp
-                                       var pmethidnode1: nullable AAmpMethid = new AAmpMethid.init_aampmethid(
-                                               tampnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist4
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist7
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist9
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist10
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist11
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist12
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist13
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction98
+private class ReduceAction89
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ttildenode2 = nodearraylist1
-                                       assert ttildenode2 isa nullable TTilde
-                                       var pmethidnode1: nullable ATildeMethid = new ATildeMethid.init_atildemethid(
-                                               ttildenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pmethidnode1
+                                       var pclasskindnode6 = nodearraylist3
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist6
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist8
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist9
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist10
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist11
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction99
+private class ReduceAction90
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var teqnode2 = nodearraylist1
-                                       assert teqnode2 isa nullable TEq
-                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
-                                               teqnode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist12
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist13
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist14
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction100
+private class ReduceAction91
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tnenode2 = nodearraylist1
-                                       assert tnenode2 isa nullable TNe
-                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
-                                               tnenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist12
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist13
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist14
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction101
+private class ReduceAction92
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa nullable TLe
-                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
-                                               tlenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist12
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist13
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist14
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction102
+private class ReduceAction93
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist14 = p.pop
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgenode2 = nodearraylist1
-                                       assert tgenode2 isa nullable TGe
-                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
-                                               tgenode2
+                                       var listnode10 = new Array[Object]
+                                       var listnode14 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var pclasskindnode6 = nodearraylist5
+                                       assert pclasskindnode6 isa nullable AClasskind
+                                       var pqclassidnode7 = nodearraylist7
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var tobranode8 = nodearraylist8
+                                       assert tobranode8 isa nullable TObra
+                                       var listnode9 = nodearraylist10
+                                       assert listnode9 isa Array[Object]
+                                       listnode10 = concat(listnode10, listnode9)
+                                       var tcbranode11 = nodearraylist11
+                                       assert tcbranode11 isa nullable TCbra
+                                       var pexterncodeblocknode12 = nodearraylist12
+                                       assert pexterncodeblocknode12 isa nullable AExternCodeBlock
+                                       var listnode13 = nodearraylist13
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist14
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode6,
+                                               pqclassidnode7,
+                                               tobranode8,
+                                               listnode10,
+                                               tcbranode11,
+                                               pexterncodeblocknode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction103
+private class ReduceAction94
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa nullable TLt
-                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
-                                               tltnode2
+                                       var tkwclassnode2 = nodearraylist1
+                                       assert tkwclassnode2 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
+                                               tkwclassnode2
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction104
+private class ReduceAction95
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa nullable TGt
-                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
-                                               tgtnode2
+                                       var tkwabstractnode2 = nodearraylist1
+                                       assert tkwabstractnode2 isa nullable TKwabstract
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
+                                               tkwabstractnode2,
+                                               tkwclassnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction105
+private class ReduceAction96
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tllnode2 = nodearraylist1
-                                       assert tllnode2 isa nullable TLl
-                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
-                                               tllnode2
+                                       var tkwinterfacenode2 = nodearraylist1
+                                       assert tkwinterfacenode2 isa nullable TKwinterface
+                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
+                                               tkwinterfacenode2
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction106
+private class ReduceAction97
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tggnode2 = nodearraylist1
-                                       assert tggnode2 isa nullable TGg
-                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
-                                               tggnode2
+                                       var tkwenumnode2 = nodearraylist1
+                                       assert tkwenumnode2 isa nullable TKwenum
+                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
+                                               tkwenumnode2
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction107
+private class ReduceAction98
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
-                                               tobranode2,
-                                               tcbranode3
+                                       var tkwexternnode2 = nodearraylist1
+                                       assert tkwexternnode2 isa nullable TKwextern
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+                                               tkwexternnode2,
+                                               tkwclassnode3
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction108
+private class ReduceAction99
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa nullable TStarship
-                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
-                                               tstarshipnode2
+                                       var tkwsubsetnode2 = nodearraylist1
+                                       assert tkwsubsetnode2 isa nullable TKwsubset
+                                       var pclasskindnode1: nullable ASubsetClasskind = new ASubsetClasskind.init_asubsetclasskind(
+                                               tkwsubsetnode2
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction109
+private class ReduceAction100
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa nullable TAssign
-                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
-                                               tidnode2,
-                                               tassignnode3
-                                       )
-                                       node_list = pmethidnode1
+                                       var listnode2 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist1
+                                       if pformaldefnode1 != null then
+                                               listnode2.add(pformaldefnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction110
+private class ReduceAction101
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
-                                               tobranode2,
-                                               tcbranode3,
-                                               tassignnode4
-                                       )
-                                       node_list = pmethidnode1
+                                       var listnode3 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pformaldefnode1 != null then
+                                               listnode3.add(pformaldefnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction111
+private class ReduceAction102
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
-                                               tidnode2
-                                       )
-                                       node_list = pmethidnode1
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction112
+private class ReduceAction103
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var ptypenode6 = nodearraylist5
-                                       assert ptypenode6 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
-                                               ptypenode6
-                                       )
-                                       node_list = psignaturenode1
+                                       var pformaldefnode1 = nodearraylist3
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction113
+private class ReduceAction104
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
                                                null
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction114
+private class ReduceAction105
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ptypenode5 = nodearraylist1
-                                       assert ptypenode5 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               ptypenode5
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode4 = nodearraylist2
+                                       assert pannotationsnode4 isa nullable AAnnotations
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
+                                               pannotationsnode4
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction115
+private class ReduceAction106
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       node_list = psignaturenode1
+                                       var tkwsupernode6 = nodearraylist2
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist4
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist5
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction116
+private class ReduceAction107
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pparamnode1 = nodearraylist1
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist4
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction117
+private class ReduceAction108
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pparamnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pparamnode1 != null then
-                                               listnode3.add(pparamnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist4
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction119
+private class ReduceAction109
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pparamnode1 = nodearraylist3
-                                       node_list = pparamnode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist4
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction120
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pannotationsnode5 = nodearraylist2
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               null,
-                                               null,
-                                               pannotationsnode5
-                                       )
-                                       node_list = pparamnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction121
+private class ReduceAction110
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist4
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
                                                null,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pparamnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction122
+private class ReduceAction111
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var pannotationsnode5 = nodearraylist2
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               null,
-                                               pannotationsnode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pparamnode1
+                                       var tkwsupernode6 = nodearraylist3
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist5
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction123
+private class ReduceAction112
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa nullable TDotdotdot
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4,
-                                               null
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist5
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist7
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pparamnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction124
+private class ReduceAction113
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var tdotdotdotnode4 = nodearraylist4
-                                       assert tdotdotdotnode4 isa nullable TDotdotdot
-                                       var pannotationsnode5 = nodearraylist2
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4,
-                                               pannotationsnode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist5
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist7
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pparamnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction125
+private class ReduceAction114
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwimportnode2 = nodearraylist1
-                                       assert tkwimportnode2 isa nullable TKwimport
-                                       var pexterncallnode3 = nodearraylist3
-                                       assert pexterncallnode3 isa nullable AExternCall
-                                       if pexterncallnode3 != null then
-                                               listnode4.add(pexterncallnode3)
-                                       end
-                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
-                                               tkwimportnode2,
-                                               listnode4
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist5
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist7
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pexterncallsnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction126
+private class ReduceAction115
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwimportnode2 = nodearraylist1
-                                       assert tkwimportnode2 isa nullable TKwimport
-                                       var pexterncallnode3 = nodearraylist3
-                                       assert pexterncallnode3 isa nullable AExternCall
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       if pexterncallnode3 != null then
-                                               listnode5.add(pexterncallnode3)
-                                       end
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
-                                               tkwimportnode2,
-                                               listnode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwsupernode6 = nodearraylist5
+                                       assert tkwsupernode6 isa nullable TKwsuper
+                                       var ptypenode7 = nodearraylist7
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ASuperPropdef = new ASuperPropdef.init_asuperpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwsupernode6,
+                                               ptypenode7,
+                                               pannotationsnode8
                                        )
-                                       node_list = pexterncallsnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction128
+private class ReduceAction116
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexterncallnode1 = nodearraylist3
-                                       node_list = pexterncallnode1
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction129
+private class ReduceAction117
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexterncallnode1 = nodearraylist1
-                                       node_list = pexterncallnode1
+                                       var listnode2 = new Array[Object]
+                                       var ppropdefnode1 = nodearraylist1
+                                       if ppropdefnode1 != null then
+                                               listnode2.add(ppropdefnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction131
+private class ReduceAction118
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwsupernode2 = nodearraylist1
-                                       assert tkwsupernode2 isa nullable TKwsuper
-                                       var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
-                                               tkwsupernode2
-                                       )
-                                       node_list = pexterncallnode1
+                                       var listnode1 = new Array[Object]
+                                       node_list = listnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction132
+private class ReduceAction119
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pmethidnode2 = nodearraylist1
-                                       assert pmethidnode2 isa nullable AMethid
-                                       var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
-                                               pmethidnode2
-                                       )
-                                       node_list = pexterncallnode1
+                                       var ppropdefnode1 = nodearraylist1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction133
+private class ReduceAction120
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tdotnode3 = nodearraylist2
-                                       assert tdotnode3 isa nullable TDot
-                                       var pmethidnode4 = nodearraylist3
-                                       assert pmethidnode4 isa nullable AMethid
-                                       var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
-                                               ptypenode2,
-                                               tdotnode3,
-                                               pmethidnode4
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexterncallnode1
+                                       var tkwmethnode6 = nodearraylist2
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction134
+private class ReduceAction121
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
-                                               ptypenode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction135
+private class ReduceAction122
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4698,53 +6443,101 @@ private class ReduceAction135
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tdotnode3 = nodearraylist2
-                                       assert tdotnode3 isa nullable TDot
-                                       var tkwasnode4 = nodearraylist3
-                                       assert tkwasnode4 isa nullable TKwas
-                                       var ptypenode5 = nodearraylist7
-                                       assert ptypenode5 isa nullable AType
-                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
-                                               ptypenode2,
-                                               tdotnode3,
-                                               tkwasnode4,
-                                               ptypenode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction136
+private class ReduceAction123
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tdotnode3 = nodearraylist2
-                                       assert tdotnode3 isa nullable TDot
-                                       var tkwasnode4 = nodearraylist3
-                                       assert tkwasnode4 isa nullable TKwas
-                                       var ptypenode5 = nodearraylist5
-                                       assert ptypenode5 isa nullable AType
-                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
-                                               ptypenode2,
-                                               tdotnode3,
-                                               tkwasnode4,
-                                               ptypenode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction137
+private class ReduceAction124
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4758,52 +6551,104 @@ private class ReduceAction137
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist3
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnullablenode4 = nodearraylist7
-                                       assert tkwnullablenode4 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnullablenode4
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction138
+private class ReduceAction125
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist3
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnullablenode4 = nodearraylist5
-                                       assert tkwnullablenode4 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnullablenode4
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexterncallnode1
+                                       var tkwmethnode6 = nodearraylist3
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction139
+private class ReduceAction126
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -4814,29 +6659,56 @@ private class ReduceAction139
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist3
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnotnode4 = nodearraylist7
-                                       assert tkwnotnode4 isa nullable TKwnot
-                                       var tkwnullablenode5 = nodearraylist9
-                                       assert tkwnullablenode5 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnotnode4,
-                                               tkwnullablenode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction140
+private class ReduceAction127
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -4844,194 +6716,508 @@ private class ReduceAction140
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist3
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnotnode4 = nodearraylist5
-                                       assert tkwnotnode4 isa nullable TKwnot
-                                       var tkwnullablenode5 = nodearraylist7
-                                       assert tkwnullablenode5 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnotnode4,
-                                               tkwnullablenode5
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction142
+private class ReduceAction128
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstringnode1 = nodearraylist1
-                                       node_list = tstringnode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction143
+private class ReduceAction129
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwinnode2 = nodearraylist1
-                                       assert tkwinnode2 isa nullable TKwin
-                                       var tstringnode3 = nodearraylist3
-                                       assert tstringnode3 isa nullable TString
-                                       var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
-                                               tkwinnode2,
-                                               tstringnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pinlanguagenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction144
+private class ReduceAction130
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var texterncodesegmentnode3 = nodearraylist1
-                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
-                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist2
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
                                                null,
-                                               texterncodesegmentnode3
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncodeblocknode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction145
+private class ReduceAction131
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pinlanguagenode2 = nodearraylist1
-                                       assert pinlanguagenode2 isa nullable AInLanguage
-                                       var texterncodesegmentnode3 = nodearraylist2
-                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
-                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
-                                               pinlanguagenode2,
-                                               texterncodesegmentnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = pexterncodeblocknode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction146
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var pexterncodeblocknode1 = nodearraylist1
-                                       node_list = pexterncodeblocknode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction148
+private class ReduceAction132
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexterncodeblocknode1 = nodearraylist2
-                                       node_list = pexterncodeblocknode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction149
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist1
-                                       node_list = ptypenode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction150
+private class ReduceAction133
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist1
-                                       node_list = ptypenode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction152
+private class ReduceAction134
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pqclassidnode3 = nodearraylist1
-                                       assert pqclassidnode3 isa nullable AQclassid
-                                       var pannotationsnode7 = nodearraylist2
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
                                                null,
-                                               pqclassidnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
                                                null,
-                                               listnode5,
                                                null,
-                                               pannotationsnode7
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = ptypenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction153
+private class ReduceAction135
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var pqclassidnode3 = nodearraylist2
-                                       assert pqclassidnode3 isa nullable AQclassid
-                                       var pannotationsnode7 = nodearraylist3
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               pqclassidnode3,
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist3
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
                                                null,
-                                               listnode5,
                                                null,
-                                               pannotationsnode7
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = ptypenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction154
+private class ReduceAction136
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5039,35 +7225,58 @@ private class ReduceAction154
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var pqclassidnode3 = nodearraylist1
-                                       assert pqclassidnode3 isa nullable AQclassid
-                                       var tobranode4 = nodearraylist2
-                                       assert tobranode4 isa nullable TObra
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tcbranode7 = nodearraylist6
-                                       assert tcbranode7 isa nullable TCbra
-                                       var pannotationsnode8 = nodearraylist7
-                                       assert pannotationsnode8 isa nullable AAnnotations
-                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
                                                null,
-                                               pqclassidnode3,
-                                               tobranode4,
-                                               listnode6,
-                                               tcbranode7,
-                                               pannotationsnode8
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = ptypenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction155
+private class ReduceAction137
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5076,419 +7285,19764 @@ private class ReduceAction155
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var pqclassidnode3 = nodearraylist2
-                                       assert pqclassidnode3 isa nullable AQclassid
-                                       var tobranode4 = nodearraylist3
-                                       assert tobranode4 isa nullable TObra
-                                       var listnode5 = nodearraylist5
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tcbranode7 = nodearraylist7
-                                       assert tcbranode7 isa nullable TCbra
-                                       var pannotationsnode8 = nodearraylist8
-                                       assert pannotationsnode8 isa nullable AAnnotations
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               pqclassidnode3,
-                                               tobranode4,
-                                               listnode6,
-                                               tcbranode7,
-                                               pannotationsnode8
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
                                        )
-                                       node_list = ptypenode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction156
+private class ReduceAction138
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       if ptypenode1 != null then
-                                               listnode2.add(ptypenode1)
-                                       end
-                                       node_list = listnode2
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction157
+private class ReduceAction139
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if ptypenode1 != null then
-                                               listnode3.add(ptypenode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction158
+private class ReduceAction140
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist3
-                                       node_list = ptypenode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist2
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction162
+private class ReduceAction141
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
-                                       node_list = pexprnode1
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction163
+private class ReduceAction142
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tkwendnode3 = nodearraylist2
-                                       assert tkwendnode3 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2,
-                                               tkwendnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction164
+private class ReduceAction143
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tkwendnode3 = nodearraylist1
-                                       assert tkwendnode3 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2,
-                                               tkwendnode3
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction165
+private class ReduceAction144
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction166
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction145
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist3
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction146
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction147
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction148
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction149
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction150
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwisanode8 = nodearraylist2
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist3
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist4
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist5
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction151
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist5
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist6
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist7
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction152
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist5
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist6
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist7
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction153
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist5
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist6
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist7
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction154
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist5
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist6
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist7
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction155
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwisanode8 = nodearraylist3
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist4
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist5
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist6
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction156
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction157
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction158
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction159
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction160
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwisanode8 = nodearraylist2
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist3
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist4
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist5
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist6
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction161
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist5
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction162
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist5
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction163
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist5
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction164
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist4
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist5
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist6
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist7
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist8
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction165
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwisanode8 = nodearraylist3
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist4
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist5
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist6
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist7
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction166
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist6
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist7
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist8
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist9
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction167
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist6
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist7
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist8
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist9
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction168
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist6
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist7
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist8
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist9
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction169
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwisanode8 = nodearraylist5
+                                       assert tkwisanode8 isa nullable TKwisa
+                                       var listnode13 = new Array[Object]
+                                       var psignaturenode11: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode13,
+                                               null,
+                                               null
+                                       )
+                                       var pannotationsnode16 = nodearraylist6
+                                       assert pannotationsnode16 isa nullable AAnnotations
+                                       var tkwdonode19 = nodearraylist7
+                                       assert tkwdonode19 isa nullable TKwdo
+                                       var pexprnode20 = nodearraylist8
+                                       assert pexprnode20 isa nullable AExpr
+                                       var tkwendnode21 = nodearraylist9
+                                       assert tkwendnode21 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               tkwisanode8,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode16,
+                                               null,
+                                               null,
+                                               tkwdonode19,
+                                               pexprnode20,
+                                               tkwendnode21
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction170
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist4
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction171
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction172
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction173
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction174
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction175
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction176
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction177
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction178
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction179
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction180
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction181
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction182
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction183
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction184
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction185
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction186
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction187
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction188
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction189
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction190
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist4
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist5
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist6
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction191
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction192
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction193
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction194
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction195
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction196
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction197
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction198
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction199
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction200
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction201
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction202
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction203
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction204
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction205
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction206
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction207
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction208
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction209
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction210
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist4
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction211
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction212
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction213
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction214
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction215
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction216
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction217
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction218
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction219
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction220
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction221
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction222
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction223
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction224
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction225
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction226
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction227
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction228
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction229
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction230
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist2
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist5
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist6
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction231
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction232
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction233
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction234
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction235
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist3
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction236
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction237
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction238
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction239
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction240
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist2
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction241
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction242
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction243
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction244
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist4
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction245
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwmethnode6 = nodearraylist3
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction246
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction247
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction248
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction249
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwmethnode6 = nodearraylist5
+                                       assert tkwmethnode6 isa nullable TKwmeth
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode6,
+                                               null,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction250
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist5
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction251
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction252
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction253
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction254
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction255
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction256
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction257
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction258
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction259
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction260
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist5
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist7
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction261
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction262
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction263
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction264
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist9
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction265
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist6
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction266
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist8
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist10
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist11
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction267
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist8
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist10
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist11
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction268
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist8
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist10
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist11
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction269
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tassignnode9 = nodearraylist8
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist10
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pannotationsnode11 = nodearraylist11
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               tassignnode9,
+                                               pexprnode10,
+                                               pannotationsnode11,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction270
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist5
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist6
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction271
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction272
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction273
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction274
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction275
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist6
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction276
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction277
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction278
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction279
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction280
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist5
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist6
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction281
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction282
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction283
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction284
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction285
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction286
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction287
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction288
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction289
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction290
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist5
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist6
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist7
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction291
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction292
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction293
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction294
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction295
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist6
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction296
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction297
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction298
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction299
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction300
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist2
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist3
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist5
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist6
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist7
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist8
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction301
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction302
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction303
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction304
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist4
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist8
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction305
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwvarnode6 = nodearraylist3
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist4
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist7
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction306
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction307
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction308
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction309
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwvarnode6 = nodearraylist5
+                                       assert tkwvarnode6 isa nullable TKwvar
+                                       var tidnode7 = nodearraylist6
+                                       assert tidnode7 isa nullable TId
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var tkwdonode12 = nodearraylist9
+                                       assert tkwdonode12 isa nullable TKwdo
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwvarnode6,
+                                               tidnode7,
+                                               ptypenode8,
+                                               null,
+                                               null,
+                                               pannotationsnode11,
+                                               tkwdonode12,
+                                               pexprnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction310
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist2
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist4
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist5
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist6
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction311
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction312
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction313
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction314
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction315
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist3
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction316
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction317
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction318
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction319
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction320
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist2
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction321
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction322
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction323
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction324
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction325
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist3
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction326
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction327
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction328
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction329
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction330
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist2
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist4
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist5
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist6
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist7
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction331
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction332
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction333
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction334
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction335
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist3
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction336
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction337
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction338
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction339
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction340
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist2
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist6
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist7
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction341
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction342
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction343
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction344
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist4
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist8
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist9
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction345
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwinitnode7 = nodearraylist3
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist7
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist8
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction346
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction347
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction348
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction349
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwinitnode7 = nodearraylist5
+                                       assert tkwinitnode7 isa nullable TKwinit
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var tkwdonode15 = nodearraylist9
+                                       assert tkwdonode15 isa nullable TKwdo
+                                       var pexprnode16 = nodearraylist10
+                                       assert pexprnode16 isa nullable AExpr
+                                       var tkwendnode17 = nodearraylist11
+                                       assert tkwendnode17 isa nullable TKwend
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               tkwinitnode7,
+                                               null,
+                                               null,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               null,
+                                               null,
+                                               tkwdonode15,
+                                               pexprnode16,
+                                               tkwendnode17
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction350
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwtypenode6 = nodearraylist2
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist3
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist4
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist5
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction351
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist4
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction352
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist4
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction353
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist4
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction354
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist4
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist5
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist6
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist7
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction355
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwtypenode6 = nodearraylist3
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist4
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist5
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist6
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction356
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist5
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist8
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction357
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist5
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist8
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction358
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist5
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist8
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction359
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwtypenode6 = nodearraylist5
+                                       assert tkwtypenode6 isa nullable TKwtype
+                                       var pqclassidnode7 = nodearraylist6
+                                       assert pqclassidnode7 isa nullable AQclassid
+                                       var ptypenode8 = nodearraylist7
+                                       assert ptypenode8 isa nullable AType
+                                       var pannotationsnode9 = nodearraylist8
+                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode6,
+                                               pqclassidnode7,
+                                               ptypenode8,
+                                               pannotationsnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction360
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist4
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist5
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction361
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction362
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction363
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction364
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction365
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist5
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist6
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction366
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction367
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction368
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction369
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction370
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist5
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist6
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction371
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction372
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction373
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction374
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction375
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction376
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction377
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction378
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction379
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               null,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction380
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist3
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist4
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist5
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist6
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction381
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction382
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction383
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction384
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction385
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction386
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction387
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction388
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction389
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               null,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction390
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist2
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist3
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist4
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist5
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist6
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction391
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction392
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction393
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction394
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist4
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist5
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist6
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist7
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist8
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist9
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction395
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var tkwnewnode9 = nodearraylist3
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist4
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist5
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist6
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist7
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction396
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction397
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction398
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction399
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var tkwnewnode9 = nodearraylist5
+                                       assert tkwnewnode9 isa nullable TKwnew
+                                       var pmethidnode10 = nodearraylist6
+                                       assert pmethidnode10 isa nullable AMethid
+                                       var psignaturenode11 = nodearraylist7
+                                       assert psignaturenode11 isa nullable ASignature
+                                       var pannotationsnode12 = nodearraylist8
+                                       assert pannotationsnode12 isa nullable AAnnotations
+                                       var pexterncallsnode13 = nodearraylist9
+                                       assert pexterncallsnode13 isa nullable AExternCalls
+                                       var pexterncodeblocknode14 = nodearraylist10
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               null,
+                                               null,
+                                               null,
+                                               tkwnewnode9,
+                                               pmethidnode10,
+                                               psignaturenode11,
+                                               pannotationsnode12,
+                                               pexterncallsnode13,
+                                               pexterncodeblocknode14,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction400
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var ppropdefnode1 = nodearraylist1
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction402
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var tkwisnode2 = nodearraylist1
+                                       assert tkwisnode2 isa nullable TKwis
+                                       var listnode5 = nodearraylist2
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tkwisnode2,
+                                               null,
+                                               null,
+                                               listnode6,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction403
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var tkwisnode2 = nodearraylist1
+                                       assert tkwisnode2 isa nullable TKwis
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tkwendnode8 = nodearraylist4
+                                       assert tkwendnode8 isa nullable TKwend
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tkwisnode2,
+                                               null,
+                                               null,
+                                               listnode6,
+                                               null,
+                                               tkwendnode8
+                                       )
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction406
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var tkwisnode2 = nodearraylist1
+                                       assert tkwisnode2 isa nullable TKwis
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tkwisnode2,
+                                               null,
+                                               null,
+                                               listnode6,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction408
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction411
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
+                                               tplusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction412
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
+                                               tminusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction413
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarnode2 = nodearraylist1
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
+                                               tstarnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction414
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarstarnode2 = nodearraylist1
+                                       assert tstarstarnode2 isa nullable TStarstar
+                                       var pmethidnode1: nullable AStarstarMethid = new AStarstarMethid.init_astarstarmethid(
+                                               tstarstarnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction415
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tslashnode2 = nodearraylist1
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
+                                               tslashnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction416
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpercentnode2 = nodearraylist1
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
+                                               tpercentnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction417
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpipenode2 = nodearraylist1
+                                       assert tpipenode2 isa nullable TPipe
+                                       var pmethidnode1: nullable APipeMethid = new APipeMethid.init_apipemethid(
+                                               tpipenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction418
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tcaretnode2 = nodearraylist1
+                                       assert tcaretnode2 isa nullable TCaret
+                                       var pmethidnode1: nullable ACaretMethid = new ACaretMethid.init_acaretmethid(
+                                               tcaretnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction419
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pmethidnode1: nullable AAmpMethid = new AAmpMethid.init_aampmethid(
+                                               tampnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction420
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var ttildenode2 = nodearraylist1
+                                       assert ttildenode2 isa nullable TTilde
+                                       var pmethidnode1: nullable ATildeMethid = new ATildeMethid.init_atildemethid(
+                                               ttildenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction421
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var teqnode2 = nodearraylist1
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
+                                               teqnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction422
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tnenode2 = nodearraylist1
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
+                                               tnenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction423
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tlenode2 = nodearraylist1
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
+                                               tlenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction424
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgenode2 = nodearraylist1
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
+                                               tgenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction425
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tltnode2 = nodearraylist1
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
+                                               tltnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction426
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgtnode2 = nodearraylist1
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
+                                               tgtnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction427
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tllnode2 = nodearraylist1
+                                       assert tllnode2 isa nullable TLl
+                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
+                                               tllnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction428
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tggnode2 = nodearraylist1
+                                       assert tggnode2 isa nullable TGg
+                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
+                                               tggnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction429
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
+                                               tobranode2,
+                                               tcbranode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction430
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarshipnode2 = nodearraylist1
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
+                                               tstarshipnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction431
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var tassignnode3 = nodearraylist2
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
+                                               tidnode2,
+                                               tassignnode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction432
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
+                                               tobranode2,
+                                               tcbranode3,
+                                               tassignnode4
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction433
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
+                                               tidnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction434
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var ptypenode6 = nodearraylist5
+                                       assert ptypenode6 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               ptypenode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction435
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               null
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction436
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var ptypenode5 = nodearraylist1
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               ptypenode5
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction437
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               null
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction438
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction439
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pparamnode1 != null then
+                                               listnode3.add(pparamnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction441
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pparamnode1 = nodearraylist3
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction442
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               null,
+                                               null,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction443
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction444
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               null,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction445
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist3
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
+                                               null
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction446
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist4
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction447
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       if pexterncallnode3 != null then
+                                               listnode4.add(pexterncallnode3)
+                                       end
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode4
+                                       )
+                                       node_list = pexterncallsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction448
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       if pexterncallnode3 != null then
+                                               listnode5.add(pexterncallnode3)
+                                       end
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode5
+                                       )
+                                       node_list = pexterncallsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction450
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexterncallnode1 = nodearraylist3
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction451
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexterncallnode1 = nodearraylist1
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction453
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwsupernode2 = nodearraylist1
+                                       assert tkwsupernode2 isa nullable TKwsuper
+                                       var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
+                                               tkwsupernode2
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction454
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pmethidnode2 = nodearraylist1
+                                       assert pmethidnode2 isa nullable AMethid
+                                       var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
+                                               pmethidnode2
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction455
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var pmethidnode4 = nodearraylist3
+                                       assert pmethidnode4 isa nullable AMethid
+                                       var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               pmethidnode4
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction456
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
+                                               ptypenode2
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction457
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var tkwasnode4 = nodearraylist3
+                                       assert tkwasnode4 isa nullable TKwas
+                                       var ptypenode5 = nodearraylist7
+                                       assert ptypenode5 isa nullable AType
+                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               tkwasnode4,
+                                               ptypenode5
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction458
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tdotnode3 = nodearraylist2
+                                       assert tdotnode3 isa nullable TDot
+                                       var tkwasnode4 = nodearraylist3
+                                       assert tkwasnode4 isa nullable TKwas
+                                       var ptypenode5 = nodearraylist5
+                                       assert ptypenode5 isa nullable AType
+                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+                                               ptypenode2,
+                                               tdotnode3,
+                                               tkwasnode4,
+                                               ptypenode5
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction459
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnullablenode4 = nodearraylist7
+                                       assert tkwnullablenode4 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnullablenode4
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction460
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnullablenode4 = nodearraylist5
+                                       assert tkwnullablenode4 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnullablenode4
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction461
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode4 = nodearraylist7
+                                       assert tkwnotnode4 isa nullable TKwnot
+                                       var tkwnullablenode5 = nodearraylist9
+                                       assert tkwnullablenode5 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullablenode5
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction462
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist3
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode4 = nodearraylist5
+                                       assert tkwnotnode4 isa nullable TKwnot
+                                       var tkwnullablenode5 = nodearraylist7
+                                       assert tkwnullablenode5 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullablenode5
+                                       )
+                                       node_list = pexterncallnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction464
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstringnode1 = nodearraylist1
+                                       node_list = tstringnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction465
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwinnode2 = nodearraylist1
+                                       assert tkwinnode2 isa nullable TKwin
+                                       var tstringnode3 = nodearraylist3
+                                       assert tstringnode3 isa nullable TString
+                                       var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
+                                               tkwinnode2,
+                                               tstringnode3
+                                       )
+                                       node_list = pinlanguagenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction466
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var texterncodesegmentnode3 = nodearraylist1
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                               null,
+                                               texterncodesegmentnode3
+                                       )
+                                       node_list = pexterncodeblocknode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction467
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pinlanguagenode2 = nodearraylist1
+                                       assert pinlanguagenode2 isa nullable AInLanguage
+                                       var texterncodesegmentnode3 = nodearraylist2
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                               pinlanguagenode2,
+                                               texterncodesegmentnode3
+                                       )
+                                       node_list = pexterncodeblocknode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction468
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexterncodeblocknode1 = nodearraylist1
+                                       node_list = pexterncodeblocknode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction470
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexterncodeblocknode1 = nodearraylist2
+                                       node_list = pexterncodeblocknode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction471
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode1 = nodearraylist1
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction472
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode1 = nodearraylist1
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction474
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var pqclassidnode3 = nodearraylist1
+                                       assert pqclassidnode3 isa nullable AQclassid
+                                       var pannotationsnode7 = nodearraylist2
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               pqclassidnode3,
+                                               null,
+                                               listnode5,
+                                               null,
+                                               pannotationsnode7
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction475
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode5 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var pqclassidnode3 = nodearraylist2
+                                       assert pqclassidnode3 isa nullable AQclassid
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               pqclassidnode3,
+                                               null,
+                                               listnode5,
+                                               null,
+                                               pannotationsnode7
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction476
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var pqclassidnode3 = nodearraylist1
+                                       assert pqclassidnode3 isa nullable AQclassid
+                                       var tobranode4 = nodearraylist2
+                                       assert tobranode4 isa nullable TObra
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tcbranode7 = nodearraylist6
+                                       assert tcbranode7 isa nullable TCbra
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               pqclassidnode3,
+                                               tobranode4,
+                                               listnode6,
+                                               tcbranode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction477
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode6 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var pqclassidnode3 = nodearraylist2
+                                       assert pqclassidnode3 isa nullable AQclassid
+                                       var tobranode4 = nodearraylist3
+                                       assert tobranode4 isa nullable TObra
+                                       var listnode5 = nodearraylist5
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tcbranode7 = nodearraylist7
+                                       assert tcbranode7 isa nullable TCbra
+                                       var pannotationsnode8 = nodearraylist8
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               pqclassidnode3,
+                                               tobranode4,
+                                               listnode6,
+                                               tcbranode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction478
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       if ptypenode1 != null then
+                                               listnode2.add(ptypenode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction479
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if ptypenode1 != null then
+                                               listnode3.add(ptypenode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction480
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var ptypenode1 = nodearraylist3
+                                       node_list = ptypenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction484
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist2
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction485
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist2
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction486
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist1
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction487
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode1 = nodearraylist1
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction488
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction489
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction490
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var tkwendnode4 = nodearraylist3
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode3,
+                                               tkwendnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction491
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tkwendnode5 = nodearraylist4
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               tkwendnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction495
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction496
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction497
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwyieldnode2 = nodearraylist1
+                                       assert tkwyieldnode2 isa nullable TKwyield
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AYieldExpr = new AYieldExpr.init_ayieldexpr(
+                                               tkwyieldnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction498
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction499
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction500
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction501
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction502
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction510
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist5
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction511
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction512
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist7
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction513
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist5
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist6
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction514
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction515
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist7
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction516
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist8
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction517
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist7
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction518
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist2
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction519
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist3
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction520
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist4
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction521
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist3
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction522
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa nullable AQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction523
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction524
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tkwinitnode5 = nodearraylist5
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pexprsnode6 = nodearraylist6
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode5,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction525
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction526
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist5
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist6
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction527
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist6
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist7
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction529
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tkwinitnode5 = nodearraylist6
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pexprsnode6 = nodearraylist7
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode5,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction530
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tkwinitnode5 = nodearraylist7
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pexprsnode6 = nodearraylist8
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode5,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction532
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist2
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction533
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist3
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist4
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction535
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwdebugnode2 = nodearraylist1
+                                       assert tkwdebugnode2 isa nullable TKwdebug
+                                       var tkwtypenode3 = nodearraylist2
+                                       assert tkwtypenode3 isa nullable TKwtype
+                                       var pexprnode4 = nodearraylist5
+                                       assert pexprnode4 isa nullable AExpr
+                                       var ptypenode5 = nodearraylist3
+                                       assert ptypenode5 isa nullable AType
+                                       var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
+                                               tkwdebugnode2,
+                                               tkwtypenode3,
+                                               pexprnode4,
+                                               ptypenode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction536
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwlabelnode2 = nodearraylist1
+                                       assert tkwlabelnode2 isa nullable TKwlabel
+                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+                                               tkwlabelnode2,
+                                               null
+                                       )
+                                       node_list = plabelnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction537
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwlabelnode2 = nodearraylist1
+                                       assert tkwlabelnode2 isa nullable TKwlabel
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+                                               tkwlabelnode2,
+                                               tidnode3
+                                       )
+                                       node_list = plabelnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction538
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction539
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
+                                               pannotationsnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction540
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction541
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist5
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction542
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist5
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist6
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction543
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tattridnode5 = nodearraylist6
+                                       assert tattridnode5 isa nullable TAttrid
+                                       var tassignnode6 = nodearraylist7
+                                       assert tassignnode6 isa nullable TAssign
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode5,
+                                               tassignnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction544
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction545
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist5
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var tassignnode7 = nodearraylist6
+                                       assert tassignnode7 isa nullable TAssign
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               tassignnode7,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction546
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var tassignnode8 = nodearraylist5
+                                       assert tassignnode8 isa nullable TAssign
+                                       var pexprnode9 = nodearraylist6
+                                       assert pexprnode9 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               tassignnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction547
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               tassignnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction548
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var tassignnode10 = nodearraylist6
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction549
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist7
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var tassignnode10 = nodearraylist8
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist9
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction550
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var tassignnode11 = nodearraylist7
+                                       assert tassignnode11 isa nullable TAssign
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction551
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist5
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist6
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var tassignnode10 = nodearraylist7
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction552
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist5
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var tassignnode11 = nodearraylist6
+                                       assert tassignnode11 isa nullable TAssign
+                                       var pexprnode12 = nodearraylist7
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction553
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var tassignnode9 = nodearraylist7
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode8,
+                                               tassignnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction554
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var tassignnode10 = nodearraylist6
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode8,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction555
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist7
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var tassignnode11 = nodearraylist8
+                                       assert tassignnode11 isa nullable TAssign
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10,
+                                               tassignnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction556
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var tassignnode12 = nodearraylist7
+                                       assert tassignnode12 isa nullable TAssign
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10,
+                                               tassignnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction557
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist8
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var tassignnode12 = nodearraylist9
+                                       assert tassignnode12 isa nullable TAssign
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               tassignnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction558
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var tassignnode13 = nodearraylist8
+                                       assert tassignnode13 isa nullable TAssign
+                                       var pexprnode14 = nodearraylist9
+                                       assert pexprnode14 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               tassignnode13,
+                                               pexprnode14
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction559
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist7
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var tassignnode12 = nodearraylist8
+                                       assert tassignnode12 isa nullable TAssign
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               tassignnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction560
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var tassignnode13 = nodearraylist7
+                                       assert tassignnode13 isa nullable TAssign
+                                       var pexprnode14 = nodearraylist8
+                                       assert pexprnode14 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               tassignnode13,
+                                               pexprnode14
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction561
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist2
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var tassignnode7 = nodearraylist3
+                                       assert tassignnode7 isa nullable TAssign
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               tassignnode7,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction562
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var tassignnode8 = nodearraylist2
+                                       assert tassignnode8 isa nullable TAssign
+                                       var pexprnode9 = nodearraylist3
+                                       assert pexprnode9 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               tassignnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction563
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist3
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var tassignnode9 = nodearraylist4
+                                       assert tassignnode9 isa nullable TAssign
+                                       var pexprnode10 = nodearraylist5
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               tassignnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction564
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var tassignnode10 = nodearraylist3
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist4
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction565
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist4
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var tassignnode10 = nodearraylist5
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist6
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction566
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var tassignnode11 = nodearraylist4
+                                       assert tassignnode11 isa nullable TAssign
+                                       var pexprnode12 = nodearraylist5
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction567
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist3
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var tassignnode10 = nodearraylist4
+                                       assert tassignnode10 isa nullable TAssign
+                                       var pexprnode11 = nodearraylist5
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction568
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var tassignnode11 = nodearraylist3
+                                       assert tassignnode11 isa nullable TAssign
+                                       var pexprnode12 = nodearraylist4
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               tassignnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction569
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               tassignnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction570
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist5
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist6
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction571
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tattridnode5 = nodearraylist6
+                                       assert tattridnode5 isa nullable TAttrid
+                                       var passignopnode6 = nodearraylist7
+                                       assert passignopnode6 isa nullable AAssignOp
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode5,
+                                               passignopnode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction572
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist3
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction573
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist5
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var passignopnode7 = nodearraylist6
+                                       assert passignopnode7 isa nullable AAssignOp
+                                       var pexprnode8 = nodearraylist7
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               passignopnode7,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction574
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var passignopnode8 = nodearraylist5
+                                       assert passignopnode8 isa nullable AAssignOp
+                                       var pexprnode9 = nodearraylist6
+                                       assert pexprnode9 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               passignopnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction575
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var passignopnode9 = nodearraylist7
+                                       assert passignopnode9 isa nullable AAssignOp
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               passignopnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction576
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var passignopnode10 = nodearraylist6
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction577
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist7
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var passignopnode10 = nodearraylist8
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist9
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction578
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var passignopnode11 = nodearraylist7
+                                       assert passignopnode11 isa nullable AAssignOp
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction579
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist5
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist6
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var passignopnode10 = nodearraylist7
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist8
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction580
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist5
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var passignopnode11 = nodearraylist6
+                                       assert passignopnode11 isa nullable AAssignOp
+                                       var pexprnode12 = nodearraylist7
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction581
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist6
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var passignopnode9 = nodearraylist7
+                                       assert passignopnode9 isa nullable AAssignOp
+                                       var pexprnode10 = nodearraylist8
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode8,
+                                               passignopnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction582
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var passignopnode10 = nodearraylist6
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist7
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode8,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction583
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist7
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var passignopnode11 = nodearraylist8
+                                       assert passignopnode11 isa nullable AAssignOp
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10,
+                                               passignopnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction584
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var passignopnode12 = nodearraylist7
+                                       assert passignopnode12 isa nullable AAssignOp
+                                       var pexprnode13 = nodearraylist8
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10,
+                                               passignopnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction585
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist8
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var passignopnode12 = nodearraylist9
+                                       assert passignopnode12 isa nullable AAssignOp
+                                       var pexprnode13 = nodearraylist10
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               passignopnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction586
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var passignopnode13 = nodearraylist8
+                                       assert passignopnode13 isa nullable AAssignOp
+                                       var pexprnode14 = nodearraylist9
+                                       assert pexprnode14 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               passignopnode13,
+                                               pexprnode14
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction587
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist7
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var passignopnode12 = nodearraylist8
+                                       assert passignopnode12 isa nullable AAssignOp
+                                       var pexprnode13 = nodearraylist9
+                                       assert pexprnode13 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               passignopnode12,
+                                               pexprnode13
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction588
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var passignopnode13 = nodearraylist7
+                                       assert passignopnode13 isa nullable AAssignOp
+                                       var pexprnode14 = nodearraylist8
+                                       assert pexprnode14 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11,
+                                               passignopnode13,
+                                               pexprnode14
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction589
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var pexprsnode6 = nodearraylist2
+                                       assert pexprsnode6 isa nullable AExprs
+                                       var passignopnode7 = nodearraylist3
+                                       assert passignopnode7 isa nullable AAssignOp
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               passignopnode7,
+                                               pexprnode8
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction590
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
+                                       )
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var passignopnode8 = nodearraylist2
+                                       assert passignopnode8 isa nullable AAssignOp
+                                       var pexprnode9 = nodearraylist3
+                                       assert pexprnode9 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6,
+                                               passignopnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction591
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var pexprsnode8 = nodearraylist3
+                                       assert pexprsnode8 isa nullable AExprs
+                                       var passignopnode9 = nodearraylist4
+                                       assert passignopnode9 isa nullable AAssignOp
+                                       var pexprnode10 = nodearraylist5
+                                       assert pexprnode10 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               passignopnode9,
+                                               pexprnode10
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction592
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
+                                       )
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var passignopnode10 = nodearraylist3
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist4
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction593
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist4
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var passignopnode10 = nodearraylist5
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist6
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction594
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var passignopnode11 = nodearraylist4
+                                       assert passignopnode11 isa nullable AAssignOp
+                                       var pexprnode12 = nodearraylist5
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction595
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist3
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var passignopnode10 = nodearraylist4
+                                       assert passignopnode10 isa nullable AAssignOp
+                                       var pexprnode11 = nodearraylist5
+                                       assert pexprnode11 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode10,
+                                               pexprnode11
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction596
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
+                                       )
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var passignopnode11 = nodearraylist3
+                                       assert passignopnode11 isa nullable AAssignOp
+                                       var pexprnode12 = nodearraylist4
+                                       assert pexprnode12 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9,
+                                               passignopnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction597
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var passignopnode4 = nodearraylist3
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               passignopnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction598
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpluseqnode2 = nodearraylist1
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
+                                               tpluseqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction599
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tminuseqnode2 = nodearraylist1
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
+                                               tminuseqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction600
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstareqnode2 = nodearraylist1
+                                       assert tstareqnode2 isa nullable TStareq
+                                       var passignopnode1: nullable AStarAssignOp = new AStarAssignOp.init_astarassignop(
+                                               tstareqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction601
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tslasheqnode2 = nodearraylist1
+                                       assert tslasheqnode2 isa nullable TSlasheq
+                                       var passignopnode1: nullable ASlashAssignOp = new ASlashAssignOp.init_aslashassignop(
+                                               tslasheqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction602
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpercenteqnode2 = nodearraylist1
+                                       assert tpercenteqnode2 isa nullable TPercenteq
+                                       var passignopnode1: nullable APercentAssignOp = new APercentAssignOp.init_apercentassignop(
+                                               tpercenteqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction603
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarstareqnode2 = nodearraylist1
+                                       assert tstarstareqnode2 isa nullable TStarstareq
+                                       var passignopnode1: nullable AStarstarAssignOp = new AStarstarAssignOp.init_astarstarassignop(
+                                               tstarstareqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction604
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpipeeqnode2 = nodearraylist1
+                                       assert tpipeeqnode2 isa nullable TPipeeq
+                                       var passignopnode1: nullable APipeAssignOp = new APipeAssignOp.init_apipeassignop(
+                                               tpipeeqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction605
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tcareteqnode2 = nodearraylist1
+                                       assert tcareteqnode2 isa nullable TCareteq
+                                       var passignopnode1: nullable ACaretAssignOp = new ACaretAssignOp.init_acaretassignop(
+                                               tcareteqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction606
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tampeqnode2 = nodearraylist1
+                                       assert tampeqnode2 isa nullable TAmpeq
+                                       var passignopnode1: nullable AAmpAssignOp = new AAmpAssignOp.init_aampassignop(
+                                               tampeqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction607
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tlleqnode2 = nodearraylist1
+                                       assert tlleqnode2 isa nullable TLleq
+                                       var passignopnode1: nullable ALlAssignOp = new ALlAssignOp.init_allassignop(
+                                               tlleqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction608
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tggeqnode2 = nodearraylist1
+                                       assert tggeqnode2 isa nullable TGgeq
+                                       var passignopnode1: nullable AGgAssignOp = new AGgAssignOp.init_aggassignop(
+                                               tggeqnode2
+                                       )
+                                       node_list = passignopnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction609
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist3
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null,
+                                               null,
+                                               plabelnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction610
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction611
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwcatchnode4 = nodearraylist4
+                                       assert tkwcatchnode4 isa nullable TKwcatch
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               tkwcatchnode4,
+                                               pexprnode5,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction612
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwelsenode6 = nodearraylist7
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction613
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction614
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwelsenode6 = nodearraylist8
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist9
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction615
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var tkwelsenode6 = nodearraylist6
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               null,
+                                               tkwelsenode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction616
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var tkwelsenode6 = nodearraylist7
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               null,
+                                               tkwelsenode6,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction617
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               null,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction618
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3,
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode7 = nodearraylist6
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               null,
+                                               null,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction619
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               null,
+                                               null,
+                                               pexprnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction621
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode4 = nodearraylist3
+                                       assert plabelnode4 isa nullable ALabel
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
+                                               plabelnode4
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction622
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction167
+private class ReduceAction623
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist7
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode6
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction624
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction625
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
                                        assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
                                        listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                       var tkwdonode5 = nodearraylist5
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var plabelnode7 = nodearraylist7
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode7
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction626
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tkwdonode5 = nodearraylist5
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction168
+private class ReduceAction627
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pforgroupnode1 = nodearraylist1
+                                       if pforgroupnode1 != null then
+                                               listnode2.add(pforgroupnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction628
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var pforgroupnode2 = nodearraylist5
+                                       listnode3 = concat(listnode3, listnode1)
+                                       if pforgroupnode2 != null then
+                                               listnode3.add(pforgroupnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction629
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       listnode3 = concat(listnode3, listnode2)
+                                       var tkwinnode4 = nodearraylist3
+                                       assert tkwinnode4 isa nullable TKwin
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pforgroupnode1: nullable AForGroup = new AForGroup.init_aforgroup(
                                                listnode3,
-                                               null
+                                               tkwinnode4,
+                                               pexprnode5
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pforgroupnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction169
+private class ReduceAction630
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4,
-                                               null
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist7
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
+                                               tkwwithnode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction170
+private class ReduceAction631
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var tkwendnode4 = nodearraylist3
-                                       assert tkwendnode4 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3,
-                                               tkwendnode4
+                                       var tkwwithnode2 = nodearraylist1
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
+                                               tkwwithnode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction171
+private class ReduceAction632
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tkwendnode5 = nodearraylist4
-                                       assert tkwendnode5 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4,
-                                               tkwendnode5
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist2
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               null,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction175
+private class ReduceAction633
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               null
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist2
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               null,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction176
+private class ReduceAction635
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwelsenode5 = nodearraylist3
+                                       assert tkwelsenode5 isa nullable TKwelse
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               null,
+                                               pexprnode4,
+                                               tkwelsenode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction177
+private class ReduceAction636
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwyieldnode2 = nodearraylist1
-                                       assert tkwyieldnode2 isa nullable TKwyield
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AYieldExpr = new AYieldExpr.init_ayieldexpr(
-                                               tkwyieldnode2,
-                                               pexprnode3
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tkwelsenode5 = nodearraylist4
+                                       assert tkwelsenode5 isa nullable TKwelse
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               tkwelsenode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction178
+private class ReduceAction637
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               null,
+                                               pexprnode4,
+                                               null,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction179
+private class ReduceAction638
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               plabelnode3
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction180
+private class ReduceAction639
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa nullable TKwabort
-                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       var tidnode1 = nodearraylist1
+                                       node_list = tidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction641
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwelsenode6 = nodearraylist9
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction181
+private class ReduceAction643
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwornode3 = nodearraylist2
+                                       assert tkwornode3 isa nullable TKwor
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
+                                               pexprnode2,
+                                               tkwornode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction182
+private class ReduceAction644
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               plabelnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwandnode3 = nodearraylist2
+                                       assert tkwandnode3 isa nullable TKwand
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
+                                               pexprnode2,
+                                               tkwandnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction190
+private class ReduceAction645
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -5500,198 +27054,139 @@ private class ReduceAction190
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
-                                       var pexprsnode6 = nodearraylist5
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var tkwornode3 = nodearraylist2
+                                       assert tkwornode3 isa nullable TKwor
+                                       var tkwelsenode4 = nodearraylist3
+                                       assert tkwelsenode4 isa nullable TKwelse
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6
+                                               tkwornode3,
+                                               tkwelsenode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction191
+private class ReduceAction646
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
-                                       var pexprsnode8 = nodearraylist6
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var tkwimpliesnode3 = nodearraylist2
+                                       assert tkwimpliesnode3 isa nullable TKwimplies
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AImpliesExpr = new AImpliesExpr.init_aimpliesexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8
+                                               tkwimpliesnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction192
+private class ReduceAction648
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist6
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var pexprsnode9 = nodearraylist7
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                       var tkwnotnode2 = nodearraylist1
+                                       assert tkwnotnode2 isa nullable TKwnot
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
+                                               tkwnotnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction193
+private class ReduceAction650
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
-                                       )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var pexprsnode9 = nodearraylist6
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var teqnode3 = nodearraylist2
+                                       assert teqnode3 isa nullable TEq
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                               teqnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction194
+private class ReduceAction651
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
-                                       var pexprsnode6 = nodearraylist2
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tnenode3 = nodearraylist2
+                                       assert tnenode3 isa nullable TNe
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6
+                                               tnenode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction195
+private class ReduceAction652
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
-                                       var pexprsnode8 = nodearraylist3
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tltnode3 = nodearraylist2
+                                       assert tltnode3 isa nullable TLt
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8
+                                               tltnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction196
+private class ReduceAction653
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -5700,213 +27195,190 @@ private class ReduceAction196
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var pexprsnode9 = nodearraylist4
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tlenode3 = nodearraylist2
+                                       assert tlenode3 isa nullable TLe
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                               tlenode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction197
+private class ReduceAction654
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
-                                       )
-                                       var tidnode8 = nodearraylist2
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var pexprsnode9 = nodearraylist3
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tgtnode3 = nodearraylist2
+                                       assert tgtnode3 isa nullable TGt
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                               tgtnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction198
+private class ReduceAction655
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable AQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var pexprsnode4 = nodearraylist3
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               pexprsnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tgenode3 = nodearraylist2
+                                       assert tgenode3 isa nullable TGe
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
+                                               pexprnode2,
+                                               tgenode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction199
+private class ReduceAction656
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist5
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var tstarshipnode3 = nodearraylist2
+                                       assert tstarshipnode3 isa nullable TStarship
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tstarshipnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction200
+private class ReduceAction657
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwisanode3 = nodearraylist2
+                                       assert tkwisanode3 isa nullable TKwisa
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tkwisanode3,
+                                               ptypenode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction201
+private class ReduceAction659
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist5
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist6
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var tpipenode3 = nodearraylist2
+                                       assert tpipenode3 isa nullable TPipe
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable APipeExpr = new APipeExpr.init_apipeexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tpipenode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction202
+private class ReduceAction661
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist6
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist7
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var tcaretnode3 = nodearraylist2
+                                       assert tcaretnode3 isa nullable TCaret
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ACaretExpr = new ACaretExpr.init_acaretexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tcaretnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction204
+private class ReduceAction663
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tkwinitnode3 = nodearraylist2
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist3
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tampnode3 = nodearraylist2
+                                       assert tampnode3 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAmpExpr = new AAmpExpr.init_aampexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tampnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction205
+private class ReduceAction665
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -5915,110 +27387,118 @@ private class ReduceAction205
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tkwinitnode3 = nodearraylist3
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist4
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tllnode3 = nodearraylist2
+                                       assert tllnode3 isa nullable TLl
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               tllnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction207
+private class ReduceAction666
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdebugnode2 = nodearraylist1
-                                       assert tkwdebugnode2 isa nullable TKwdebug
-                                       var tkwtypenode3 = nodearraylist2
-                                       assert tkwtypenode3 isa nullable TKwtype
-                                       var pexprnode4 = nodearraylist5
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tggnode3 = nodearraylist2
+                                       assert tggnode3 isa nullable TGg
+                                       var pexprnode4 = nodearraylist4
                                        assert pexprnode4 isa nullable AExpr
-                                       var ptypenode5 = nodearraylist3
-                                       assert ptypenode5 isa nullable AType
-                                       var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
-                                               tkwdebugnode2,
-                                               tkwtypenode3,
-                                               pexprnode4,
-                                               ptypenode5
+                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
+                                               pexprnode2,
+                                               tggnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction208
+private class ReduceAction668
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwlabelnode2 = nodearraylist1
-                                       assert tkwlabelnode2 isa nullable TKwlabel
-                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
-                                               tkwlabelnode2,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tplusnode3 = nodearraylist2
+                                       assert tplusnode3 isa nullable TPlus
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+                                               pexprnode2,
+                                               tplusnode3,
+                                               pexprnode4
                                        )
-                                       node_list = plabelnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction209
+private class ReduceAction669
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwlabelnode2 = nodearraylist1
-                                       assert tkwlabelnode2 isa nullable TKwlabel
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
-                                               tkwlabelnode2,
-                                               tidnode3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tminusnode3 = nodearraylist2
+                                       assert tminusnode3 isa nullable TMinus
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
+                                               pexprnode2,
+                                               tminusnode3,
+                                               pexprnode4
                                        )
-                                       node_list = plabelnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction210
+private class ReduceAction671
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tstarnode3 = nodearraylist2
+                                       assert tstarnode3 isa nullable TStar
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
+                                               pexprnode2,
+                                               tstarnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction211
+private class ReduceAction672
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6027,324 +27507,228 @@ private class ReduceAction211
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist4
-                                       assert ptypenode4 isa nullable AType
-                                       var pannotationsnode7 = nodearraylist3
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
-                                               null,
-                                               pannotationsnode7
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tslashnode3 = nodearraylist2
+                                       assert tslashnode3 isa nullable TSlash
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               tslashnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction212
+private class ReduceAction673
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tpercentnode3 = nodearraylist2
+                                       assert tpercentnode3 isa nullable TPercent
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
+                                               pexprnode2,
+                                               tpercentnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction213
+private class ReduceAction675
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist4
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist5
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pannotationsnode7 = nodearraylist3
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6,
-                                               pannotationsnode7
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tstarstarnode3 = nodearraylist2
+                                       assert tstarstarnode3 isa nullable TStarstar
+                                       var pexprnode4 = nodearraylist4
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AStarstarExpr = new AStarstarExpr.init_astarstarexpr(
+                                               pexprnode2,
+                                               tstarstarnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction214
+private class ReduceAction677
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist5
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist6
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction215
+private class ReduceAction678
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist2
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AUplusExpr = new AUplusExpr.init_auplusexpr(
+                                               tplusnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction216
+private class ReduceAction679
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
-                                       var pexprsnode6 = nodearraylist5
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var tassignnode7 = nodearraylist6
-                                       assert tassignnode7 isa nullable TAssign
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               tassignnode7,
-                                               pexprnode8
+                                       var ttildenode2 = nodearraylist1
+                                       assert ttildenode2 isa nullable TTilde
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AUtildeExpr = new AUtildeExpr.init_autildeexpr(
+                                               ttildenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction217
+private class ReduceAction680
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
-                                       var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
-                                       )
-                                       var tassignnode8 = nodearraylist5
-                                       assert tassignnode8 isa nullable TAssign
-                                       var pexprnode9 = nodearraylist6
-                                       assert pexprnode9 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               tassignnode8,
-                                               pexprnode9
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa nullable TKwonce
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction218
+private class ReduceAction682
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprsnode5 = nodearraylist4
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               pexprsnode5
                                        )
-                                       var pexprsnode8 = nodearraylist6
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var tassignnode9 = nodearraylist7
-                                       assert tassignnode9 isa nullable TAssign
-                                       var pexprnode10 = nodearraylist8
-                                       assert pexprnode10 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               tassignnode9,
-                                               pexprnode10
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction683
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode6 = new Array[Object]
+                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode6
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               null,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction219
+private class ReduceAction684
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
-                                       var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
-                                       )
-                                       var tassignnode10 = nodearraylist6
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tattridnode4 = nodearraylist6
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction220
+private class ReduceAction685
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6352,538 +27736,505 @@ private class ReduceAction220
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist6
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
                                        )
-                                       var pexprsnode9 = nodearraylist7
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var tassignnode10 = nodearraylist8
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var tattridnode6 = nodearraylist7
+                                       assert tattridnode6 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction221
+private class ReduceAction686
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist6
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
-                                       )
-                                       var tassignnode11 = nodearraylist7
-                                       assert tassignnode11 isa nullable TAssign
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode11,
-                                               pexprnode12
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode4 = nodearraylist3
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction222
+private class ReduceAction687
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
-                                       )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
                                        )
-                                       var pexprsnode9 = nodearraylist6
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var tassignnode10 = nodearraylist7
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var pexprsnode7 = nodearraylist6
+                                       assert pexprsnode7 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction223
+private class ReduceAction688
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
-                                       )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tidnode6 = nodearraylist5
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
                                        )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       var listnode8 = new Array[Object]
+                                       var pexprsnode7: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode8
                                        )
-                                       var tassignnode11 = nodearraylist6
-                                       assert tassignnode11 isa nullable TAssign
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode11,
-                                               pexprnode12
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction224
+private class ReduceAction689
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
                                        )
-                                       var pexprsnode6 = nodearraylist2
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var tassignnode7 = nodearraylist3
-                                       assert tassignnode7 isa nullable TAssign
-                                       var pexprnode8 = nodearraylist4
-                                       assert pexprnode8 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               tassignnode7,
-                                               pexprnode8
+                                       var pexprsnode9 = nodearraylist7
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction225
+private class ReduceAction690
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
                                        )
-                                       var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
+                                       var tidnode8 = nodearraylist6
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
                                        )
-                                       var tassignnode8 = nodearraylist2
-                                       assert tassignnode8 isa nullable TAssign
-                                       var pexprnode9 = nodearraylist3
-                                       assert pexprnode9 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               tassignnode8,
-                                               pexprnode9
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction226
+private class ReduceAction691
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist5
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist6
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
                                        )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var tidnode9 = nodearraylist7
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
                                        )
-                                       var pexprsnode8 = nodearraylist3
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var tassignnode9 = nodearraylist4
-                                       assert tassignnode9 isa nullable TAssign
-                                       var pexprnode10 = nodearraylist5
-                                       assert pexprnode10 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               tassignnode9,
-                                               pexprnode10
+                                       var pexprsnode10 = nodearraylist8
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction227
+private class ReduceAction692
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist5
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist6
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
                                        )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var tidnode9 = nodearraylist7
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
                                        )
-                                       var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
                                        )
-                                       var tassignnode10 = nodearraylist3
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist4
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction228
+private class ReduceAction693
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist5
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
                                        )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
                                        )
-                                       var pexprsnode9 = nodearraylist4
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var tassignnode10 = nodearraylist5
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist6
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var pexprsnode10 = nodearraylist7
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction229
+private class ReduceAction694
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist5
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
                                        )
-                                       var tassignnode11 = nodearraylist4
-                                       assert tassignnode11 isa nullable TAssign
-                                       var pexprnode12 = nodearraylist5
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode11,
-                                               pexprnode12
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction230
+private class ReduceAction695
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
                                        )
-                                       var tidnode8 = nodearraylist2
+                                       var tidnode8 = nodearraylist6
                                        assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               null,
                                                tidnode8
                                        )
-                                       var pexprsnode9 = nodearraylist3
+                                       var pexprsnode9 = nodearraylist7
                                        assert pexprsnode9 isa nullable AExprs
-                                       var tassignnode10 = nodearraylist4
-                                       assert tassignnode10 isa nullable TAssign
-                                       var pexprnode11 = nodearraylist5
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode10,
-                                               pexprnode11
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction231
+private class ReduceAction696
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
                                        )
-                                       var tidnode8 = nodearraylist2
+                                       var tidnode8 = nodearraylist6
                                        assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               null,
                                                tidnode8
                                        )
                                        var listnode10 = new Array[Object]
                                        var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode10
                                        )
-                                       var tassignnode11 = nodearraylist3
-                                       assert tassignnode11 isa nullable TAssign
-                                       var pexprnode12 = nodearraylist4
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               tassignnode11,
-                                               pexprnode12
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction232
+private class ReduceAction697
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
-                                               pexprnode2,
-                                               pexprsnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode10
+                                       )
+                                       var pexprsnode11 = nodearraylist8
+                                       assert pexprsnode11 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode11
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction233
+private class ReduceAction698
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6895,55 +28246,101 @@ private class ReduceAction233
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist5
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist6
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode11
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction234
+private class ReduceAction699
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist2
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist3
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
-                                               pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tclassidnode10 = nodearraylist7
+                                       assert tclassidnode10 isa nullable TClassid
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode9,
+                                               tclassidnode10
+                                       )
+                                       var tidnode11 = nodearraylist8
+                                       assert tidnode11 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode11
+                                       )
+                                       var pexprsnode12 = nodearraylist9
+                                       assert pexprsnode12 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode12
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction235
+private class ReduceAction700
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6951,353 +28348,363 @@ private class ReduceAction235
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
                                        )
-                                       var pexprsnode6 = nodearraylist5
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var passignopnode7 = nodearraylist6
-                                       assert passignopnode7 isa nullable AAssignOp
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               passignopnode7,
-                                               pexprnode8
+                                       var listnode9 = new Array[Object]
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tclassidnode10 = nodearraylist7
+                                       assert tclassidnode10 isa nullable TClassid
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode9,
+                                               tclassidnode10
+                                       )
+                                       var tidnode11 = nodearraylist8
+                                       assert tidnode11 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode11
+                                       )
+                                       var listnode13 = new Array[Object]
+                                       var pexprsnode12: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode13
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode12
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction236
+private class ReduceAction701
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
                                        )
-                                       var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
+                                       var listnode9 = new Array[Object]
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode9,
+                                               null
                                        )
-                                       var passignopnode8 = nodearraylist5
-                                       assert passignopnode8 isa nullable AAssignOp
-                                       var pexprnode9 = nodearraylist6
-                                       assert pexprnode9 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               passignopnode8,
-                                               pexprnode9
+                                       var tidnode11 = nodearraylist7
+                                       assert tidnode11 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode11
+                                       )
+                                       var pexprsnode12 = nodearraylist8
+                                       assert pexprsnode12 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode12
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction702
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tquestnode5 = nodearraylist3
+                                       assert tquestnode5 isa nullable TQuest
+                                       var pexprnode3: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode4,
+                                               tquestnode5
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pqualifiednode7: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode9,
+                                               null
+                                       )
+                                       var tidnode11 = nodearraylist7
+                                       assert tidnode11 isa nullable TId
+                                       var pqidnode6: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode7,
+                                               tidnode11
+                                       )
+                                       var listnode13 = new Array[Object]
+                                       var pexprsnode12: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode13
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode6,
+                                               pexprsnode12
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction237
+private class ReduceAction703
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode6 = nodearraylist2
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
                                        )
-                                       var pexprsnode8 = nodearraylist6
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var passignopnode9 = nodearraylist7
-                                       assert passignopnode9 isa nullable AAssignOp
-                                       var pexprnode10 = nodearraylist8
-                                       assert pexprnode10 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               passignopnode9,
-                                               pexprnode10
+                                       var pexprsnode7 = nodearraylist3
+                                       assert pexprsnode7 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction238
+private class ReduceAction704
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode6 = nodearraylist2
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
                                        )
-                                       var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
+                                       var listnode8 = new Array[Object]
+                                       var pexprsnode7: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode8
                                        )
-                                       var passignopnode10 = nodearraylist6
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               passignopnode10,
-                                               pexprnode11
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction239
+private class ReduceAction705
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
+                                       var tclassidnode7 = nodearraylist2
                                        assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
                                                listnode6,
                                                tclassidnode7
                                        )
-                                       var tidnode8 = nodearraylist6
+                                       var tidnode8 = nodearraylist3
                                        assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
                                                tidnode8
                                        )
-                                       var pexprsnode9 = nodearraylist7
+                                       var pexprsnode9 = nodearraylist4
                                        assert pexprsnode9 isa nullable AExprs
-                                       var passignopnode10 = nodearraylist8
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode10,
-                                               pexprnode11
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction240
+private class ReduceAction706
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
+                                       var tclassidnode7 = nodearraylist2
                                        assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
                                                listnode6,
                                                tclassidnode7
                                        )
-                                       var tidnode8 = nodearraylist6
+                                       var tidnode8 = nodearraylist3
                                        assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
                                                tidnode8
                                        )
                                        var listnode10 = new Array[Object]
                                        var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode10
                                        )
-                                       var passignopnode11 = nodearraylist7
-                                       assert passignopnode11 isa nullable AAssignOp
-                                       var pexprnode12 = nodearraylist8
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode11,
-                                               pexprnode12
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction241
+private class ReduceAction707
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist2
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist3
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
                                        )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
                                        )
-                                       var pexprsnode9 = nodearraylist6
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var passignopnode10 = nodearraylist7
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode10,
-                                               pexprnode11
+                                       var pexprsnode10 = nodearraylist5
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction242
+private class ReduceAction708
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               null
-                                       )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist2
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist3
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
                                        )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
                                        )
-                                       var passignopnode11 = nodearraylist6
-                                       assert passignopnode11 isa nullable AAssignOp
-                                       var pexprnode12 = nodearraylist7
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode11,
-                                               pexprnode12
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction243
+private class ReduceAction709
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7306,31 +28713,36 @@ private class ReduceAction243
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist2
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
                                        )
-                                       var pexprsnode6 = nodearraylist2
-                                       assert pexprsnode6 isa nullable AExprs
-                                       var passignopnode7 = nodearraylist3
-                                       assert passignopnode7 isa nullable AAssignOp
-                                       var pexprnode8 = nodearraylist4
-                                       assert pexprnode8 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               passignopnode7,
-                                               pexprnode8
+                                       var tidnode9 = nodearraylist3
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist4
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction244
+private class ReduceAction710
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7338,33 +28750,38 @@ private class ReduceAction244
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
+                                       var listnode6 = nodearraylist2
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
                                        )
-                                       var passignopnode8 = nodearraylist2
-                                       assert passignopnode8 isa nullable AAssignOp
-                                       var pexprnode9 = nodearraylist3
-                                       assert pexprnode9 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6,
-                                               passignopnode8,
-                                               pexprnode9
+                                       var tidnode9 = nodearraylist3
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction245
+private class ReduceAction712
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7374,125 +28791,96 @@ private class ReduceAction245
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
-                                       var pexprsnode8 = nodearraylist3
-                                       assert pexprsnode8 isa nullable AExprs
-                                       var passignopnode9 = nodearraylist4
-                                       assert passignopnode9 isa nullable AAssignOp
-                                       var pexprnode10 = nodearraylist5
-                                       assert pexprnode10 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist5
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               passignopnode9,
-                                               pexprnode10
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction246
+private class ReduceAction713
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
                                        )
-                                       var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
+                                       var tattridnode5 = nodearraylist6
+                                       assert tattridnode5 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+                                               pexprnode2,
+                                               tattridnode5
                                        )
-                                       var passignopnode10 = nodearraylist3
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist4
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction714
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist2
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8,
-                                               passignopnode10,
-                                               pexprnode11
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction247
+private class ReduceAction716
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode5 = nodearraylist4
+                                       assert tidnode5 isa nullable TId
                                        var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                               null,
+                                               tidnode5
                                        )
-                                       var pexprsnode9 = nodearraylist4
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var passignopnode10 = nodearraylist5
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist6
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode10,
-                                               pexprnode11
+                                               pexprsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction248
+private class ReduceAction718
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7502,103 +28890,97 @@ private class ReduceAction248
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
                                        var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
+                                               listnode5,
+                                               tclassidnode6
                                        )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
                                        var pqidnode3: nullable AQid = new AQid.init_aqid(
                                                pqualifiednode4,
-                                               tidnode8
+                                               tidnode7
                                        )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
                                        )
-                                       var passignopnode11 = nodearraylist4
-                                       assert passignopnode11 isa nullable AAssignOp
-                                       var pexprnode12 = nodearraylist5
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode11,
-                                               pexprnode12
+                                               pexprsnode8
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction249
+private class ReduceAction720
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
                                        var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist5
+                                       assert tclassidnode7 isa nullable TClassid
                                        var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
                                                listnode6,
-                                               null
+                                               tclassidnode7
                                        )
-                                       var tidnode8 = nodearraylist2
+                                       var tidnode8 = nodearraylist6
                                        assert tidnode8 isa nullable TId
                                        var pqidnode3: nullable AQid = new AQid.init_aqid(
                                                pqualifiednode4,
                                                tidnode8
                                        )
-                                       var pexprsnode9 = nodearraylist3
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var passignopnode10 = nodearraylist4
-                                       assert passignopnode10 isa nullable AAssignOp
-                                       var pexprnode11 = nodearraylist5
-                                       assert pexprnode11 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode10,
-                                               pexprnode11
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction250
+private class ReduceAction722
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
                                        var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        listnode6 = concat(listnode6, listnode5)
                                        var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
                                                listnode6,
                                                null
                                        )
-                                       var tidnode8 = nodearraylist2
+                                       var tidnode8 = nodearraylist5
                                        assert tidnode8 isa nullable TId
                                        var pqidnode3: nullable AQid = new AQid.init_aqid(
                                                pqualifiednode4,
@@ -7608,364 +28990,565 @@ private class ReduceAction250
                                        var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
                                                listnode10
                                        )
-                                       var passignopnode11 = nodearraylist3
-                                       assert passignopnode11 isa nullable AAssignOp
-                                       var pexprnode12 = nodearraylist4
-                                       assert pexprnode12 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                pqidnode3,
-                                               pexprsnode9,
-                                               passignopnode11,
-                                               pexprnode12
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction251
+private class ReduceAction724
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var passignopnode4 = nodearraylist3
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var tidnode7 = nodearraylist5
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
-                                               pexprsnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               pqidnode5,
+                                               pexprsnode8
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction252
+private class ReduceAction726
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa nullable TPluseq
-                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
-                                               tpluseqnode2
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
                                        )
-                                       node_list = passignopnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction253
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa nullable TMinuseq
-                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
-                                               tminuseqnode2
+                                       var listnode7 = new Array[Object]
+                                       var tclassidnode8 = nodearraylist5
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
                                        )
-                                       node_list = passignopnode1
+                                       var tidnode9 = nodearraylist6
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode10
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction254
+private class ReduceAction728
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstareqnode2 = nodearraylist1
-                                       assert tstareqnode2 isa nullable TStareq
-                                       var passignopnode1: nullable AStarAssignOp = new AStarAssignOp.init_astarassignop(
-                                               tstareqnode2
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
                                        )
-                                       node_list = passignopnode1
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var tclassidnode9 = nodearraylist6
+                                       assert tclassidnode9 isa nullable TClassid
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               tclassidnode9
+                                       )
+                                       var tidnode10 = nodearraylist7
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction255
+private class ReduceAction730
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tslasheqnode2 = nodearraylist1
-                                       assert tslasheqnode2 isa nullable TSlasheq
-                                       var passignopnode1: nullable ASlashAssignOp = new ASlashAssignOp.init_aslashassignop(
-                                               tslasheqnode2
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
                                        )
-                                       node_list = passignopnode1
+                                       var listnode8 = new Array[Object]
+                                       var listnode7 = nodearraylist5
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pqualifiednode6: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode8,
+                                               null
+                                       )
+                                       var tidnode10 = nodearraylist6
+                                       assert tidnode10 isa nullable TId
+                                       var pqidnode5: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode6,
+                                               tidnode10
+                                       )
+                                       var listnode12 = new Array[Object]
+                                       var pexprsnode11: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode12
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode5,
+                                               pexprsnode11
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction256
+private class ReduceAction732
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tpercenteqnode2 = nodearraylist1
-                                       assert tpercenteqnode2 isa nullable TPercenteq
-                                       var passignopnode1: nullable APercentAssignOp = new APercentAssignOp.init_apercentassignop(
-                                               tpercenteqnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode5 = nodearraylist1
+                                       assert tidnode5 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode5
                                        )
-                                       node_list = passignopnode1
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction257
+private class ReduceAction734
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstarstareqnode2 = nodearraylist1
-                                       assert tstarstareqnode2 isa nullable TStarstareq
-                                       var passignopnode1: nullable AStarstarAssignOp = new AStarstarAssignOp.init_astarstarassignop(
-                                               tstarstareqnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode6 = nodearraylist1
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode5,
+                                               tclassidnode6
                                        )
-                                       node_list = passignopnode1
+                                       var tidnode7 = nodearraylist2
+                                       assert tidnode7 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode7
+                                       )
+                                       var listnode9 = new Array[Object]
+                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode9
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode8
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction258
+private class ReduceAction736
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpipeeqnode2 = nodearraylist1
-                                       assert tpipeeqnode2 isa nullable TPipeeq
-                                       var passignopnode1: nullable APipeAssignOp = new APipeAssignOp.init_apipeassignop(
-                                               tpipeeqnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tclassidnode7 = nodearraylist2
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist3
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
                                        )
-                                       node_list = passignopnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction259
+private class ReduceAction738
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tcareteqnode2 = nodearraylist1
-                                       assert tcareteqnode2 isa nullable TCareteq
-                                       var passignopnode1: nullable ACaretAssignOp = new ACaretAssignOp.init_acaretassignop(
-                                               tcareteqnode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var listnode6 = new Array[Object]
+                                       var listnode5 = nodearraylist1
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               null
                                        )
-                                       node_list = passignopnode1
+                                       var tidnode8 = nodearraylist2
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode4,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               pqidnode3,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction260
+private class ReduceAction740
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tampeqnode2 = nodearraylist1
-                                       assert tampeqnode2 isa nullable TAmpeq
-                                       var passignopnode1: nullable AAmpAssignOp = new AAmpAssignOp.init_aampassignop(
-                                               tampeqnode2
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa nullable AQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       node_list = passignopnode1
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction261
+private class ReduceAction742
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tlleqnode2 = nodearraylist1
-                                       assert tlleqnode2 isa nullable TLleq
-                                       var passignopnode1: nullable ALlAssignOp = new ALlAssignOp.init_allassignop(
-                                               tlleqnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
                                        )
-                                       node_list = passignopnode1
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction262
+private class ReduceAction744
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tggeqnode2 = nodearraylist1
-                                       assert tggeqnode2 isa nullable TGgeq
-                                       var passignopnode1: nullable AGgAssignOp = new AGgAssignOp.init_aggassignop(
-                                               tggeqnode2
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
                                        )
-                                       node_list = passignopnode1
+                                       var tkwinitnode5 = nodearraylist5
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var listnode7 = new Array[Object]
+                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode7
+                                       )
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode5,
+                                               pexprsnode6
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction263
+private class ReduceAction746
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var plabelnode6 = nodearraylist3
-                                       assert plabelnode6 isa nullable ALabel
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               null,
-                                               null,
-                                               plabelnode6
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode5 = new Array[Object]
+                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode5
+                                       )
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction264
+private class ReduceAction747
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               null,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               pexprsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction265
+private class ReduceAction748
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwcatchnode4 = nodearraylist4
-                                       assert tkwcatchnode4 isa nullable TKwcatch
-                                       var pexprnode5 = nodearraylist5
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               tkwcatchnode4,
-                                               pexprnode5,
-                                               null
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode6 = nodearraylist6
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
+                                       )
+                                       var pexprsnode7 = nodearraylist7
+                                       assert pexprsnode7 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction266
+private class ReduceAction749
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwelsenode6 = nodearraylist7
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist8
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode6 = nodearraylist6
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var pexprsnode7: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction267
+private class ReduceAction750
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               null,
-                                               null
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist6
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist7
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist8
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction268
+private class ReduceAction751
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7973,35 +29556,44 @@ private class ReduceAction268
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwelsenode6 = nodearraylist8
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist9
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist6
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist7
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode9
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction269
+private class ReduceAction752
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8009,29 +29601,39 @@ private class ReduceAction269
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var tkwelsenode6 = nodearraylist6
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               null,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist7
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist8
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist9
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction270
+private class ReduceAction753
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8044,29 +29646,41 @@ private class ReduceAction270
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var tkwelsenode6 = nodearraylist7
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist8
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               null,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist7
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist8
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction271
+private class ReduceAction754
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8079,64 +29693,88 @@ private class ReduceAction271
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode7 = nodearraylist8
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               null,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
+                                       )
+                                       var tidnode9 = nodearraylist7
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist8
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction272
+private class ReduceAction755
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode7 = nodearraylist6
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               null,
-                                               null,
-                                               pexprnode7
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
+                                       )
+                                       var tidnode9 = nodearraylist7
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction273
+private class ReduceAction756
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8144,418 +29782,376 @@ private class ReduceAction273
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               null,
-                                               null,
-                                               pexprnode7
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var ptypenode5 = nodearraylist8
+                                       assert ptypenode5 isa nullable AType
+                                       var tcparnode6 = nodearraylist10
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               toparnode4,
+                                               ptypenode5,
+                                               tcparnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction275
+private class ReduceAction757
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var plabelnode4 = nodearraylist3
-                                       assert plabelnode4 isa nullable ALabel
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
-                                               pexprnode3,
-                                               plabelnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var tkwnotnode5 = nodearraylist8
+                                       assert tkwnotnode5 isa nullable TKwnot
+                                       var tkwnullnode6 = nodearraylist10
+                                       assert tkwnullnode6 isa nullable TKwnull
+                                       var tcparnode7 = nodearraylist12
+                                       assert tcparnode7 isa nullable TCpar
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               toparnode4,
+                                               tkwnotnode5,
+                                               tkwnullnode6,
+                                               tcparnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction276
+private class ReduceAction758
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
-                                               pexprnode3,
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode5 = nodearraylist6
+                                       assert tkwnotnode5 isa nullable TKwnot
+                                       var tkwnullnode6 = nodearraylist8
+                                       assert tkwnullnode6 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
+                                               pexprnode2,
+                                               tkwasnode3,
+                                               null,
+                                               tkwnotnode5,
+                                               tkwnullnode6,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction277
+private class ReduceAction760
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var plabelnode6 = nodearraylist7
-                                       assert plabelnode6 isa nullable ALabel
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               plabelnode6
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tdotdotdotnode3 = nodearraylist2
+                                       assert tdotdotdotnode3 isa nullable TDotdotdot
+                                       var pexprnode1: nullable AVarargExpr = new AVarargExpr.init_avarargexpr(
+                                               pexprnode2,
+                                               tdotdotdotnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction278
+private class ReduceAction761
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               null
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var tassignnode3 = nodearraylist2
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ANamedargExpr = new ANamedargExpr.init_anamedargexpr(
+                                               tidnode2,
+                                               tassignnode3,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction279
+private class ReduceAction762
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tkwdonode5 = nodearraylist5
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var plabelnode7 = nodearraylist7
-                                       assert plabelnode7 isa nullable ALabel
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               plabelnode7
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction280
+private class ReduceAction763
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tkwdonode5 = nodearraylist5
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction281
+private class ReduceAction764
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pforgroupnode1 = nodearraylist1
-                                       if pforgroupnode1 != null then
-                                               listnode2.add(pforgroupnode1)
-                                       end
-                                       node_list = listnode2
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2,
+                                               pannotationsnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction282
+private class ReduceAction765
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       var pforgroupnode2 = nodearraylist5
-                                       listnode3 = concat(listnode3, listnode1)
-                                       if pforgroupnode2 != null then
-                                               listnode3.add(pforgroupnode2)
-                                       end
-                                       node_list = listnode3
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2,
+                                               pannotationsnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction283
+private class ReduceAction766
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       listnode3 = concat(listnode3, listnode2)
-                                       var tkwinnode4 = nodearraylist3
-                                       assert tkwinnode4 isa nullable TKwin
-                                       var pexprnode5 = nodearraylist5
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pforgroupnode1: nullable AForGroup = new AForGroup.init_aforgroup(
-                                               listnode3,
-                                               tkwinnode4,
-                                               pexprnode5
+                                       var tintegernode2 = nodearraylist1
+                                       assert tintegernode2 isa nullable TInteger
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AIntegerExpr = new AIntegerExpr.init_aintegerexpr(
+                                               tintegernode2,
+                                               pannotationsnode3
                                        )
-                                       node_list = pforgroupnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction284
+private class ReduceAction767
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var plabelnode6 = nodearraylist7
-                                       assert plabelnode6 isa nullable ALabel
-                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
-                                               tkwwithnode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               plabelnode6
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction285
+private class ReduceAction768
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa nullable TKwwith
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AWithExpr = new AWithExpr.init_awithexpr(
-                                               tkwwithnode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               null
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction286
+private class ReduceAction769
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               null,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6,
-                                               null
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa nullable TString
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+                                               tstringnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction287
+private class ReduceAction771
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
+                                       var tkwmethnode2 = nodearraylist1
+                                       assert tkwmethnode2 isa nullable TKwmeth
+                                       var psignaturenode3 = nodearraylist2
+                                       assert psignaturenode3 isa nullable ASignature
+                                       var tkwdonode4 = nodearraylist3
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var listnode7 = new Array[Object]
+                                       var pexprnode6 = nodearraylist5
                                        assert pexprnode6 isa nullable AExpr
-                                       var pannotationsnode7 = nodearraylist2
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               null,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6,
-                                               pannotationsnode7
+                                       if pexprnode6 != null then
+                                               listnode7.add(pexprnode6)
+                                       end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode7,
+                                               null
+                                       )
+                                       var pexprnode1: nullable ALambdaExpr = new ALambdaExpr.init_alambdaexpr(
+                                               tkwmethnode2,
+                                               psignaturenode3,
+                                               tkwdonode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction289
+private class ReduceAction772
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tkwelsenode5 = nodearraylist3
-                                       assert tkwelsenode5 isa nullable TKwelse
-                                       var pexprnode6 = nodearraylist4
+                                       var tkwmethnode2 = nodearraylist1
+                                       assert tkwmethnode2 isa nullable TKwmeth
+                                       var psignaturenode3 = nodearraylist2
+                                       assert psignaturenode3 isa nullable ASignature
+                                       var tkwdonode4 = nodearraylist3
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var listnode8 = new Array[Object]
+                                       var pexprnode6 = nodearraylist5
                                        assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4,
-                                               tkwelsenode5,
-                                               pexprnode6
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       if pexprnode6 != null then
+                                               listnode8.add(pexprnode6)
+                                       end
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode8,
+                                               null
+                                       )
+                                       var pexprnode1: nullable ALambdaExpr = new ALambdaExpr.init_alambdaexpr(
+                                               tkwmethnode2,
+                                               psignaturenode3,
+                                               tkwdonode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction290
+private class ReduceAction773
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8565,295 +30161,307 @@ private class ReduceAction290
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tkwelsenode5 = nodearraylist4
-                                       assert tkwelsenode5 isa nullable TKwelse
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               tkwelsenode5,
-                                               pexprnode6
+                                       var tkwmethnode2 = nodearraylist1
+                                       assert tkwmethnode2 isa nullable TKwmeth
+                                       var psignaturenode3 = nodearraylist2
+                                       assert psignaturenode3 isa nullable ASignature
+                                       var tkwdonode4 = nodearraylist3
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ALambdaExpr = new ALambdaExpr.init_alambdaexpr(
+                                               tkwmethnode2,
+                                               psignaturenode3,
+                                               tkwdonode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction291
+private class ReduceAction775
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4,
-                                               null,
-                                               null
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tdotdotnode4 = nodearraylist5
+                                       assert tdotdotnode4 isa nullable TDotdot
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tcbranode6 = nodearraylist9
+                                       assert tcbranode6 isa nullable TCbra
+                                       var pannotationsnode7 = nodearraylist10
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
+                                               tdotdotnode4,
+                                               pexprnode5,
+                                               tcbranode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction292
+private class ReduceAction776
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4,
-                                               null,
-                                               null
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tdotdotnode4 = nodearraylist5
+                                       assert tdotdotnode4 isa nullable TDotdot
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tobranode6 = nodearraylist9
+                                       assert tobranode6 isa nullable TObra
+                                       var pannotationsnode7 = nodearraylist10
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
+                                               tdotdotnode4,
+                                               pexprnode5,
+                                               tobranode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction293
+private class ReduceAction777
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode1 = nodearraylist1
-                                       node_list = tidnode1
+                                       var listnode4 = new Array[Object]
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var ptypenode5 = nodearraylist4
+                                       assert ptypenode5 isa nullable AType
+                                       var tcbranode6 = nodearraylist5
+                                       assert tcbranode6 isa nullable TCbra
+                                       var pannotationsnode7 = nodearraylist6
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                               tobranode2,
+                                               listnode4,
+                                               ptypenode5,
+                                               tcbranode6,
+                                               pannotationsnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction295
+private class ReduceAction778
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
+                                       var tcparnode4 = nodearraylist5
+                                       assert tcparnode4 isa nullable TCpar
+                                       var pannotationsnode5 = nodearraylist6
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+                                               toparnode2,
                                                pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                               tcparnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction297
+private class ReduceAction780
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwornode3 = nodearraylist2
-                                       assert tkwornode3 isa nullable TKwor
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               tkwornode3,
-                                               pexprnode4
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode1: nullable AManyExpr = new AManyExpr.init_amanyexpr(
+                                               listnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction298
+private class ReduceAction781
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwandnode3 = nodearraylist2
-                                       assert tkwandnode3 isa nullable TKwand
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               tkwandnode3,
-                                               pexprnode4
-                                       )
+                                       var pexprnode1 = nodearraylist3
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction299
+private class ReduceAction782
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwornode3 = nodearraylist2
-                                       assert tkwornode3 isa nullable TKwor
-                                       var tkwelsenode4 = nodearraylist3
-                                       assert tkwelsenode4 isa nullable TKwelse
-                                       var pexprnode5 = nodearraylist5
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
-                                               pexprnode2,
-                                               tkwornode3,
-                                               tkwelsenode4,
-                                               pexprnode5
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction300
+private class ReduceAction783
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwimpliesnode3 = nodearraylist2
-                                       assert tkwimpliesnode3 isa nullable TKwimplies
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AImpliesExpr = new AImpliesExpr.init_aimpliesexpr(
-                                               pexprnode2,
-                                               tkwimpliesnode3,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction302
+private class ReduceAction785
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa nullable TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
-                                       )
+                                       var pexprnode1 = nodearraylist1
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction304
+private class ReduceAction787
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var teqnode3 = nodearraylist2
-                                       assert teqnode3 isa nullable TEq
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               teqnode3,
-                                               pexprnode4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               null,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction305
+private class ReduceAction788
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tnenode3 = nodearraylist2
-                                       assert tnenode3 isa nullable TNe
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               tnenode3,
-                                               pexprnode4
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       listnode4 = concat(listnode4, listnode2)
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pannotationsnode5 = nodearraylist3
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction306
+private class ReduceAction789
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8862,22 +30470,29 @@ private class ReduceAction306
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tltnode3 = nodearraylist2
-                                       assert tltnode3 isa nullable TLt
-                                       var pexprnode4 = nodearraylist4
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       var pexprnode4 = nodearraylist3
                                        assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               tltnode3,
-                                               pexprnode4
+                                       listnode5 = concat(listnode5, listnode2)
+                                       listnode5 = concat(listnode5, listnode3)
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pannotationsnode6 = nodearraylist4
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction307
+private class ReduceAction790
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8886,214 +30501,181 @@ private class ReduceAction307
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tlenode3 = nodearraylist2
-                                       assert tlenode3 isa nullable TLe
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               tlenode3,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var pexprnode2 = nodearraylist3
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction308
+private class ReduceAction791
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tgtnode3 = nodearraylist2
-                                       assert tgtnode3 isa nullable TGt
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               tgtnode3,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       if pexprnode1 != null then
+                                               listnode2.add(pexprnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction309
+private class ReduceAction792
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tgenode3 = nodearraylist2
-                                       assert tgenode3 isa nullable TGe
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               tgenode3,
-                                               pexprnode4
+                                       var tstartstringnode2 = nodearraylist1
+                                       assert tstartstringnode2 isa nullable TStartString
+                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
+                                               tstartstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction310
+private class ReduceAction795
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tstarshipnode3 = nodearraylist2
-                                       assert tstarshipnode3 isa nullable TStarship
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               tstarshipnode3,
-                                               pexprnode4
+                                       var tmidstringnode2 = nodearraylist1
+                                       assert tmidstringnode2 isa nullable TMidString
+                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
+                                               tmidstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction311
+private class ReduceAction796
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwisanode3 = nodearraylist2
-                                       assert tkwisanode3 isa nullable TKwisa
-                                       var ptypenode4 = nodearraylist4
-                                       assert ptypenode4 isa nullable AType
-                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
-                                               pexprnode2,
-                                               tkwisanode3,
-                                               ptypenode4
+                                       var tendstringnode2 = nodearraylist1
+                                       assert tendstringnode2 isa nullable TEndString
+                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
+                                               tendstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction313
+private class ReduceAction797
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tpipenode3 = nodearraylist2
-                                       assert tpipenode3 isa nullable TPipe
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable APipeExpr = new APipeExpr.init_apipeexpr(
-                                               pexprnode2,
-                                               tpipenode3,
-                                               pexprnode4
+                                       var listnode6 = new Array[Object]
+                                       var tatnode3 = nodearraylist1
+                                       assert tatnode3 isa nullable TAt
+                                       var pannotationnode5 = nodearraylist2
+                                       assert pannotationnode5 isa nullable AAnnotation
+                                       if pannotationnode5 != null then
+                                               listnode6.add(pannotationnode5)
+                                       end
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               tatnode3,
+                                               null,
+                                               listnode6,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction315
+private class ReduceAction798
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tcaretnode3 = nodearraylist2
-                                       assert tcaretnode3 isa nullable TCaret
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ACaretExpr = new ACaretExpr.init_acaretexpr(
-                                               pexprnode2,
-                                               tcaretnode3,
-                                               pexprnode4
+                                       var listnode6 = new Array[Object]
+                                       var tatnode3 = nodearraylist1
+                                       assert tatnode3 isa nullable TAt
+                                       var toparnode4 = nodearraylist2
+                                       assert toparnode4 isa nullable TOpar
+                                       var listnode5 = nodearraylist4
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var tcparnode7 = nodearraylist6
+                                       assert tcparnode7 isa nullable TCpar
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               tatnode3,
+                                               toparnode4,
+                                               listnode6,
+                                               tcparnode7,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction317
+private class ReduceAction799
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tampnode3 = nodearraylist2
-                                       assert tampnode3 isa nullable TAmp
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAmpExpr = new AAmpExpr.init_aampexpr(
-                                               pexprnode2,
-                                               tampnode3,
-                                               pexprnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var pannotationsnode1 = nodearraylist1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction319
+private class ReduceAction801
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tllnode3 = nodearraylist2
-                                       assert tllnode3 isa nullable TLl
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
-                                               pexprnode2,
-                                               tllnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist1
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist2
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction320
+private class ReduceAction802
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9102,22 +30684,31 @@ private class ReduceAction320
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tggnode3 = nodearraylist2
-                                       assert tggnode3 isa nullable TGg
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
-                                               pexprnode2,
-                                               tggnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwpublicnode5 = nodearraylist1
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist4
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction322
+private class ReduceAction803
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9126,22 +30717,31 @@ private class ReduceAction322
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tplusnode3 = nodearraylist2
-                                       assert tplusnode3 isa nullable TPlus
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
-                                               pexprnode2,
-                                               tplusnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwprivatenode5 = nodearraylist1
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist4
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction323
+private class ReduceAction804
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9150,22 +30750,31 @@ private class ReduceAction323
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tminusnode3 = nodearraylist2
-                                       assert tminusnode3 isa nullable TMinus
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               tminusnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwprotectednode5 = nodearraylist1
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist4
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction325
+private class ReduceAction805
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9174,1326 +30783,1847 @@ private class ReduceAction325
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tstarnode3 = nodearraylist2
-                                       assert tstarnode3 isa nullable TStar
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               tstarnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwintrudenode5 = nodearraylist1
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist4
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction326
+private class ReduceAction806
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tslashnode3 = nodearraylist2
-                                       assert tslashnode3 isa nullable TSlash
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               tslashnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist3
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction327
+private class ReduceAction807
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tpercentnode3 = nodearraylist2
-                                       assert tpercentnode3 isa nullable TPercent
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               tpercentnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction329
+private class ReduceAction808
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tstarstarnode3 = nodearraylist2
-                                       assert tstarstarnode3 isa nullable TStarstar
-                                       var pexprnode4 = nodearraylist4
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AStarstarExpr = new AStarstarExpr.init_astarstarexpr(
-                                               pexprnode2,
-                                               tstarstarnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction331
+private class ReduceAction809
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction332
+private class ReduceAction810
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa nullable TPlus
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AUplusExpr = new AUplusExpr.init_auplusexpr(
-                                               tplusnode2,
-                                               pexprnode3
+                                       var listnode8 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction333
+private class ReduceAction811
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ttildenode2 = nodearraylist1
-                                       assert ttildenode2 isa nullable TTilde
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AUtildeExpr = new AUtildeExpr.init_autildeexpr(
-                                               ttildenode2,
-                                               pexprnode3
+                                       var listnode9 = new Array[Object]
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist1
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist2
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist4
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist6
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction334
+private class ReduceAction812
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa nullable TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
+                                       var listnode9 = new Array[Object]
+                                       var tkwpublicnode5 = nodearraylist1
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction336
+private class ReduceAction813
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var pexprsnode5 = nodearraylist4
-                                       assert pexprsnode5 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
+                                       var listnode9 = new Array[Object]
+                                       var tkwprivatenode5 = nodearraylist1
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                null,
-                                               pexprsnode5
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction337
+private class ReduceAction814
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode6 = new Array[Object]
-                                       var pexprsnode5: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode6
-                                       )
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
+                                       var listnode9 = new Array[Object]
+                                       var tkwprotectednode5 = nodearraylist1
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                null,
-                                               pexprsnode5
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction338
+private class ReduceAction815
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tattridnode4 = nodearraylist6
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
+                                       var listnode9 = new Array[Object]
+                                       var tkwintrudenode5 = nodearraylist1
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction339
+private class ReduceAction816
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode4 = nodearraylist3
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist3
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist7
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction341
+private class ReduceAction817
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist5
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction342
+private class ReduceAction818
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist2
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction344
+private class ReduceAction819
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tidnode5 = nodearraylist4
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                null,
-                                               tidnode5
-                                       )
-                                       var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
-                                       )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction346
+private class ReduceAction820
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist5
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
                                        var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
-                                       )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction348
+private class ReduceAction821
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       if pannotationnode1 != null then
+                                               listnode2.add(pannotationnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction822
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist5
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist6
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
-                                       )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pannotationnode1 != null then
+                                               listnode3.add(pannotationnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction350
+private class ReduceAction843
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
+                                       var listnode9 = new Array[Object]
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       var tidnode8 = nodearraylist5
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
-                                       )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                       var patidnode6 = nodearraylist1
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist2
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction352
+private class ReduceAction844
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode5 = nodearraylist1
-                                       assert tidnode5 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode5
-                                       )
-                                       var listnode7 = new Array[Object]
-                                       var pexprsnode6: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode7
+                                       var listnode9 = new Array[Object]
+                                       var tkwpublicnode5 = nodearraylist1
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
                                        )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode6
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction354
+private class ReduceAction845
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode5 = new Array[Object]
-                                       var tclassidnode6 = nodearraylist1
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode5,
-                                               tclassidnode6
-                                       )
-                                       var tidnode7 = nodearraylist2
-                                       assert tidnode7 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode7
-                                       )
                                        var listnode9 = new Array[Object]
-                                       var pexprsnode8: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode9
+                                       var tkwprivatenode5 = nodearraylist1
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
                                        )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode8
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction356
+private class ReduceAction846
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tclassidnode7 = nodearraylist2
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
+                                       var listnode9 = new Array[Object]
+                                       var tkwprotectednode5 = nodearraylist1
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
                                        )
-                                       var tidnode8 = nodearraylist3
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       node_list = pannotationnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction847
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var tkwintrudenode5 = nodearraylist1
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
                                        )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist4
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction358
+private class ReduceAction848
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var listnode6 = new Array[Object]
-                                       var listnode5 = nodearraylist1
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pqualifiednode4: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       var tidnode8 = nodearraylist2
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode3: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode4,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
-                                       )
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
-                                               pexprnode2,
-                                               pqidnode3,
-                                               pexprsnode9
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist3
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction360
+private class ReduceAction849
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable AQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var listnode5 = new Array[Object]
-                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode5
-                                       )
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               pexprsnode4
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist5
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction362
+private class ReduceAction850
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode5 = new Array[Object]
-                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode5
-                                       )
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist5
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction364
+private class ReduceAction851
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var listnode5 = new Array[Object]
-                                       var pexprsnode4: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode5
-                                       )
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist5
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction365
+private class ReduceAction852
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               pexprsnode3
+                                       var listnode9 = new Array[Object]
+                                       var tkwredefnode3 = nodearraylist1
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pexprnode8 = nodearraylist5
+                                       assert pexprnode8 isa nullable AExpr
+                                       if pexprnode8 != null then
+                                               listnode9.add(pexprnode8)
+                                       end
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               null,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction366
+private class ReduceAction854
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var tidnode6 = nodearraylist6
-                                       assert tidnode6 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode6
-                                       )
-                                       var pexprsnode7 = nodearraylist7
-                                       assert pexprsnode7 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode7
-                                       )
-                                       node_list = pexprnode1
+                                       var pannotationnode1 = nodearraylist3
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction367
+private class ReduceAction855
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var tidnode6 = nodearraylist6
-                                       assert tidnode6 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               null,
-                                               tidnode6
-                                       )
                                        var listnode8 = new Array[Object]
-                                       var pexprsnode7: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode8
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode7
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction368
+private class ReduceAction856
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode6 = new Array[Object]
-                                       var tclassidnode7 = nodearraylist6
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist7
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode8
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
                                        )
-                                       var pexprsnode9 = nodearraylist8
-                                       assert pexprsnode9 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode9
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction369
+private class ReduceAction857
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode6 = new Array[Object]
-                                       var tclassidnode7 = nodearraylist6
-                                       assert tclassidnode7 isa nullable TClassid
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode6,
-                                               tclassidnode7
-                                       )
-                                       var tidnode8 = nodearraylist7
-                                       assert tidnode8 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode8
-                                       )
-                                       var listnode10 = new Array[Object]
-                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode10
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
                                        )
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode9
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction370
+private class ReduceAction858
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var tclassidnode8 = nodearraylist7
-                                       assert tclassidnode8 isa nullable TClassid
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode7,
-                                               tclassidnode8
-                                       )
-                                       var tidnode9 = nodearraylist8
-                                       assert tidnode9 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode9
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
                                        )
-                                       var pexprsnode10 = nodearraylist9
-                                       assert pexprsnode10 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode10
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction371
+private class ReduceAction859
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var tclassidnode8 = nodearraylist7
-                                       assert tclassidnode8 isa nullable TClassid
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode7,
-                                               tclassidnode8
-                                       )
-                                       var tidnode9 = nodearraylist8
-                                       assert tidnode9 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode9
-                                       )
-                                       var listnode11 = new Array[Object]
-                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode11
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
                                        )
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode10
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction372
+private class ReduceAction860
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode7,
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       var tidnode9 = nodearraylist7
-                                       assert tidnode9 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode9
-                                       )
-                                       var pexprsnode10 = nodearraylist8
-                                       assert pexprsnode10 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode10
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction373
+private class ReduceAction861
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
-                                               listnode7,
-                                               null
-                                       )
-                                       var tidnode9 = nodearraylist7
-                                       assert tidnode9 isa nullable TId
-                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
-                                               pqualifiednode5,
-                                               tidnode9
-                                       )
-                                       var listnode11 = new Array[Object]
-                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
-                                               listnode11
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
                                        )
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               pqidnode4,
-                                               pexprsnode10
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction374
+private class ReduceAction862
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var toparnode4 = nodearraylist6
-                                       assert toparnode4 isa nullable TOpar
-                                       var ptypenode5 = nodearraylist8
-                                       assert ptypenode5 isa nullable AType
-                                       var tcparnode6 = nodearraylist10
-                                       assert tcparnode6 isa nullable TCpar
-                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               toparnode4,
-                                               ptypenode5,
-                                               tcparnode6
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction375
+private class ReduceAction863
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var toparnode4 = nodearraylist6
-                                       assert toparnode4 isa nullable TOpar
-                                       var tkwnotnode5 = nodearraylist8
-                                       assert tkwnotnode5 isa nullable TKwnot
-                                       var tkwnullnode6 = nodearraylist10
-                                       assert tkwnullnode6 isa nullable TKwnull
-                                       var tcparnode7 = nodearraylist12
-                                       assert tcparnode7 isa nullable TCpar
-                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               toparnode4,
-                                               tkwnotnode5,
-                                               tkwnullnode6,
-                                               tcparnode7
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction376
+private class ReduceAction864
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnotnode5 = nodearraylist6
-                                       assert tkwnotnode5 isa nullable TKwnot
-                                       var tkwnullnode6 = nodearraylist8
-                                       assert tkwnullnode6 isa nullable TKwnull
-                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
                                                null,
-                                               tkwnotnode5,
-                                               tkwnullnode6,
                                                null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction378
+private class ReduceAction865
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tdotdotdotnode3 = nodearraylist2
-                                       assert tdotdotdotnode3 isa nullable TDotdotdot
-                                       var pexprnode1: nullable AVarargExpr = new AVarargExpr.init_avarargexpr(
-                                               pexprnode2,
-                                               tdotdotdotnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist3
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction379
+private class ReduceAction866
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
+                                       )
+                                       node_list = pannotationnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction867
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa nullable TAssign
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ANamedargExpr = new ANamedargExpr.init_anamedargexpr(
-                                               tidnode2,
-                                               tassignnode3,
-                                               pexprnode4
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction380
+private class ReduceAction868
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa nullable TKwself
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction381
+private class ReduceAction869
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa nullable TKwtrue
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist5
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction382
+private class ReduceAction870
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa nullable TKwfalse
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
-                                               tkwfalsenode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist4
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction383
+private class ReduceAction871
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa nullable TKwnull
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction384
+private class ReduceAction872
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tintegernode2 = nodearraylist1
-                                       assert tintegernode2 isa nullable TInteger
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable AIntegerExpr = new AIntegerExpr.init_aintegerexpr(
-                                               tintegernode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction385
+private class ReduceAction873
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa nullable TFloat
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction386
+private class ReduceAction874
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa nullable TChar
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
-                                               tcharnode2,
-                                               pannotationsnode3
+                                       var listnode8 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var pannotationsnode10 = nodearraylist6
+                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode8,
+                                               null,
+                                               pannotationsnode10
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction387
+private class ReduceAction875
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa nullable TString
-                                       var pannotationsnode3 = nodearraylist2
-                                       assert pannotationsnode3 isa nullable AAnnotations
-                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
-                                               tstringnode2,
-                                               pannotationsnode3
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist3
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist6
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction390
+private class ReduceAction876
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10503,36 +32633,42 @@ private class ReduceAction390
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tdotdotnode4 = nodearraylist5
-                                       assert tdotdotnode4 isa nullable TDotdot
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tcbranode6 = nodearraylist9
-                                       assert tcbranode6 isa nullable TCbra
-                                       var pannotationsnode7 = nodearraylist10
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
-                                               tobranode2,
-                                               pexprnode3,
-                                               tdotdotnode4,
-                                               pexprnode5,
-                                               tcbranode6,
-                                               pannotationsnode7
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction391
+private class ReduceAction877
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10542,180 +32678,275 @@ private class ReduceAction391
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tdotdotnode4 = nodearraylist5
-                                       assert tdotdotnode4 isa nullable TDotdot
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tobranode6 = nodearraylist9
-                                       assert tobranode6 isa nullable TObra
-                                       var pannotationsnode7 = nodearraylist10
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
-                                               tobranode2,
-                                               pexprnode3,
-                                               tdotdotnode4,
-                                               pexprnode5,
-                                               tobranode6,
-                                               pannotationsnode7
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction392
+private class ReduceAction878
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var ptypenode5 = nodearraylist4
-                                       assert ptypenode5 isa nullable AType
-                                       var tcbranode6 = nodearraylist5
-                                       assert tcbranode6 isa nullable TCbra
-                                       var pannotationsnode7 = nodearraylist6
-                                       assert pannotationsnode7 isa nullable AAnnotations
-                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
-                                               tobranode2,
-                                               listnode4,
-                                               ptypenode5,
-                                               tcbranode6,
-                                               pannotationsnode7
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction393
+private class ReduceAction879
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tcparnode4 = nodearraylist5
-                                       assert tcparnode4 isa nullable TCpar
-                                       var pannotationsnode5 = nodearraylist6
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
-                                               toparnode2,
-                                               pexprnode3,
-                                               tcparnode4,
-                                               pannotationsnode5
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction395
+private class ReduceAction880
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable AManyExpr = new AManyExpr.init_amanyexpr(
-                                               listnode4
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist7
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction396
+private class ReduceAction881
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist3
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction397
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction398
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction400
+private class ReduceAction882
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       node_list = pexprnode1
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction402
+private class ReduceAction883
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10723,275 +32954,530 @@ private class ReduceAction402
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               null,
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
                                                null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction403
+private class ReduceAction884
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       listnode4 = concat(listnode4, listnode2)
-                                       if pexprnode3 != null then
-                                               listnode4.add(pexprnode3)
-                                       end
-                                       var pannotationsnode5 = nodearraylist3
-                                       assert pannotationsnode5 isa nullable AAnnotations
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode4,
-                                               pannotationsnode5
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction404
+private class ReduceAction885
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       listnode5 = concat(listnode5, listnode2)
-                                       listnode5 = concat(listnode5, listnode3)
-                                       if pexprnode4 != null then
-                                               listnode5.add(pexprnode4)
-                                       end
-                                       var pannotationsnode6 = nodearraylist4
-                                       assert pannotationsnode6 isa nullable AAnnotations
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode5,
-                                               pannotationsnode6
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
                                        )
-                                       node_list = pexprnode1
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist3
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist6
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction405
+private class ReduceAction886
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       var pexprnode2 = nodearraylist3
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction406
+private class ReduceAction887
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       if pexprnode1 != null then
-                                               listnode2.add(pexprnode1)
-                                       end
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction407
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa nullable TStartString
-                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
-                                               tstartstringnode2
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction410
+private class ReduceAction888
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa nullable TMidString
-                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
-                                               tmidstringnode2
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction411
+private class ReduceAction889
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa nullable TEndString
-                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
-                                               tendstringnode2
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist5
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist7
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist8
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction412
+private class ReduceAction890
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tatnode3 = nodearraylist1
-                                       assert tatnode3 isa nullable TAt
-                                       var pannotationnode5 = nodearraylist2
-                                       assert pannotationnode5 isa nullable AAnnotation
-                                       if pannotationnode5 != null then
-                                               listnode6.add(pannotationnode5)
-                                       end
-                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
-                                               null,
-                                               tatnode3,
-                                               null,
-                                               listnode6,
-                                               null,
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                                null
                                        )
-                                       node_list = pannotationsnode1
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist4
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist7
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction413
+private class ReduceAction891
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
-                                       var tatnode3 = nodearraylist1
-                                       assert tatnode3 isa nullable TAt
-                                       var toparnode4 = nodearraylist2
-                                       assert toparnode4 isa nullable TOpar
-                                       var listnode5 = nodearraylist4
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var tcparnode7 = nodearraylist6
-                                       assert tcparnode7 isa nullable TCpar
-                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
-                                               null,
-                                               tatnode3,
-                                               toparnode4,
-                                               listnode6,
-                                               tcparnode7,
-                                               null
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
-                                       node_list = pannotationsnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction414
+private class ReduceAction892
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pannotationsnode1 = nodearraylist1
-                                       node_list = pannotationsnode1
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction416
+private class ReduceAction893
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
-                                       var tkwredefnode3 = nodearraylist1
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist3
-                                       assert patidnode5 isa nullable AAtid
-                                       var pannotationsnode9 = nodearraylist4
-                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
-                                               null,
+                                               pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
-                                               null,
-                                               listnode7,
-                                               null,
-                                               pannotationsnode9
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction417
+private class ReduceAction894
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11001,98 +33487,144 @@ private class ReduceAction417
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var tkwredefnode3 = nodearraylist1
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist3
-                                       assert patidnode5 isa nullable AAtid
-                                       var toparnode6 = nodearraylist4
-                                       assert toparnode6 isa nullable TOpar
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var tcparnode9 = nodearraylist8
-                                       assert tcparnode9 isa nullable TCpar
-                                       var pannotationsnode10 = nodearraylist9
-                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var toparnode7 = nodearraylist6
+                                       assert toparnode7 isa nullable TOpar
+                                       var listnode8 = nodearraylist8
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var tcparnode10 = nodearraylist9
+                                       assert tcparnode10 isa nullable TCpar
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
-                                               null,
+                                               pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
-                                               toparnode6,
-                                               listnode8,
-                                               tcparnode9,
-                                               pannotationsnode10
+                                               patidnode6,
+                                               toparnode7,
+                                               listnode9,
+                                               tcparnode10,
+                                               pannotationsnode11
                                        )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction418
+private class ReduceAction895
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pannotationnode1 = nodearraylist1
-                                       if pannotationnode1 != null then
-                                               listnode2.add(pannotationnode1)
-                                       end
-                                       node_list = listnode2
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var patidnode6 = nodearraylist2
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist3
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction419
+private class ReduceAction896
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pannotationnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pannotationnode1 != null then
-                                               listnode3.add(pannotationnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwpublicnode5 = nodearraylist2
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction422
+private class ReduceAction897
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
-                                       var tkwredefnode3 = nodearraylist1
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist3
-                                       assert patidnode5 isa nullable AAtid
-                                       var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa nullable AExpr
-                                       if pexprnode7 != null then
-                                               listnode8.add(pexprnode7)
-                                       end
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprivatenode5 = nodearraylist2
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
                                                null,
-                                               tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
+                                               patidnode6,
                                                null,
-                                               listnode8,
+                                               listnode9,
                                                null,
                                                null
                                        )
@@ -11100,20 +33632,83 @@ private class ReduceAction422
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction424
+private class ReduceAction898
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pannotationnode1 = nodearraylist3
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwprotectednode5 = nodearraylist2
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pannotationnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction899
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode9 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwintrudenode5 = nodearraylist2
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist4
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist5
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
+                                       )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction425
+private class ReduceAction900
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11123,22 +33718,26 @@ private class ReduceAction425
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
+                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist4
-                                       assert patidnode5 isa nullable AAtid
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               null
+                                       )
+                                       var patidnode6 = nodearraylist3
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist4
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
+                                               patidnode6,
                                                null,
-                                               listnode7,
+                                               listnode9,
                                                null,
                                                null
                                        )
@@ -11146,49 +33745,52 @@ private class ReduceAction425
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction426
+private class ReduceAction901
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode7 = new Array[Object]
+                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist4
-                                       assert patidnode5 isa nullable AAtid
-                                       var pannotationsnode9 = nodearraylist5
-                                       assert pannotationsnode9 isa nullable AAnnotations
+                                       var tkwpublicnode5 = nodearraylist3
+                                       assert tkwpublicnode5 isa nullable TKwpublic
+                                       var pvisibilitynode4: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
+                                               tkwpublicnode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
+                                               patidnode6,
                                                null,
-                                               listnode7,
+                                               listnode9,
                                                null,
-                                               pannotationsnode9
+                                               null
                                        )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction427
+private class ReduceAction902
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -11196,44 +33798,40 @@ private class ReduceAction427
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
+                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist4
-                                       assert patidnode5 isa nullable AAtid
-                                       var toparnode6 = nodearraylist5
-                                       assert toparnode6 isa nullable TOpar
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var tcparnode9 = nodearraylist8
-                                       assert tcparnode9 isa nullable TCpar
+                                       var tkwprivatenode5 = nodearraylist3
+                                       assert tkwprivatenode5 isa nullable TKwprivate
+                                       var pvisibilitynode4: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
-                                               toparnode6,
-                                               listnode8,
-                                               tcparnode9,
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
                                                null
                                        )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction428
+private class ReduceAction903
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -11241,68 +33839,69 @@ private class ReduceAction428
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
+                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist4
-                                       assert patidnode5 isa nullable AAtid
-                                       var toparnode6 = nodearraylist5
-                                       assert toparnode6 isa nullable TOpar
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var tcparnode9 = nodearraylist8
-                                       assert tcparnode9 isa nullable TCpar
-                                       var pannotationsnode10 = nodearraylist9
-                                       assert pannotationsnode10 isa nullable AAnnotations
+                                       var tkwprotectednode5 = nodearraylist3
+                                       assert tkwprotectednode5 isa nullable TKwprotected
+                                       var pvisibilitynode4: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
-                                               toparnode6,
-                                               listnode8,
-                                               tcparnode9,
-                                               pannotationsnode10
+                                               patidnode6,
+                                               null,
+                                               listnode9,
+                                               null,
+                                               null
                                        )
                                        node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction429
+private class ReduceAction904
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode8 = new Array[Object]
+                                       var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var patidnode5 = nodearraylist4
-                                       assert patidnode5 isa nullable AAtid
-                                       var listnode7 = nodearraylist5
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
+                                       var tkwintrudenode5 = nodearraylist3
+                                       assert tkwintrudenode5 isa nullable TKwintrude
+                                       var pvisibilitynode4: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode5
+                                       )
+                                       var patidnode6 = nodearraylist5
+                                       assert patidnode6 isa nullable AAtid
+                                       var listnode8 = nodearraylist6
+                                       assert listnode8 isa Array[Object]
+                                       listnode9 = concat(listnode9, listnode8)
                                        var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               patidnode5,
+                                               patidnode6,
                                                null,
-                                               listnode8,
+                                               listnode9,
                                                null,
                                                null
                                        )
@@ -11310,7 +33909,7 @@ private class ReduceAction429
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction430
+private class ReduceAction905
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11336,7 +33935,7 @@ private class ReduceAction430
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction431
+private class ReduceAction906
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11365,7 +33964,7 @@ private class ReduceAction431
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction432
+private class ReduceAction907
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11402,7 +34001,7 @@ private class ReduceAction432
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction433
+private class ReduceAction908
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11442,7 +34041,7 @@ private class ReduceAction433
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction434
+private class ReduceAction909
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11472,7 +34071,7 @@ private class ReduceAction434
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction438
+private class ReduceAction913
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11487,7 +34086,7 @@ private class ReduceAction438
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction441
+private class ReduceAction916
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11508,7 +34107,35 @@ private class ReduceAction441
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction442
+private class ReduceAction917
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tquestnode4 = nodearraylist2
+                                       assert tquestnode4 isa nullable TQuest
+                                       var pexprnode2: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode3,
+                                               tquestnode4
+                                       )
+                                       var pmethidnode5 = nodearraylist5
+                                       assert pmethidnode5 isa nullable AMethid
+                                       var pexprnode1: nullable AMethidExpr = new AMethidExpr.init_amethidexpr(
+                                               pexprnode2,
+                                               pmethidnode5
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction918
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11525,7 +34152,7 @@ private class ReduceAction442
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction443
+private class ReduceAction919
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11540,7 +34167,7 @@ private class ReduceAction443
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction444
+private class ReduceAction920
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11555,7 +34182,7 @@ private class ReduceAction444
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction445
+private class ReduceAction921
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11570,7 +34197,7 @@ private class ReduceAction445
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction446
+private class ReduceAction922
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11585,7 +34212,7 @@ private class ReduceAction446
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction447
+private class ReduceAction923
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11611,7 +34238,7 @@ private class ReduceAction447
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction448
+private class ReduceAction924
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11633,7 +34260,7 @@ private class ReduceAction448
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction450
+private class ReduceAction926
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11652,7 +34279,7 @@ private class ReduceAction450
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction452
+private class ReduceAction928
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11665,7 +34292,7 @@ private class ReduceAction452
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction453
+private class ReduceAction929
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11691,7 +34318,7 @@ private class ReduceAction453
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction455
+private class ReduceAction931
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11711,7 +34338,7 @@ private class ReduceAction455
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction456
+private class ReduceAction932
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11725,7 +34352,7 @@ private class ReduceAction456
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction457
+private class ReduceAction933
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11743,21 +34370,7 @@ private class ReduceAction457
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction458
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction459
+private class ReduceAction935
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11772,7 +34385,7 @@ private class ReduceAction459
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction460
+private class ReduceAction936
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11793,7 +34406,7 @@ private class ReduceAction460
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction461
+private class ReduceAction937
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11811,7 +34424,7 @@ private class ReduceAction461
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction462
+private class ReduceAction938
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11833,7 +34446,7 @@ private class ReduceAction462
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction463
+private class ReduceAction939
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11855,7 +34468,7 @@ private class ReduceAction463
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction464
+private class ReduceAction940
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11881,7 +34494,7 @@ private class ReduceAction464
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction465
+private class ReduceAction941
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11898,7 +34511,7 @@ private class ReduceAction465
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction466
+private class ReduceAction942
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11919,7 +34532,7 @@ private class ReduceAction466
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction467
+private class ReduceAction943
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11937,7 +34550,7 @@ private class ReduceAction467
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction469
+private class ReduceAction945
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11953,7 +34566,7 @@ private class ReduceAction469
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction470
+private class ReduceAction946
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11977,7 +34590,7 @@ private class ReduceAction470
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction471
+private class ReduceAction947
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12005,7 +34618,7 @@ private class ReduceAction471
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction472
+private class ReduceAction948
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12030,7 +34643,7 @@ private class ReduceAction472
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction473
+private class ReduceAction949
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12041,7 +34654,7 @@ private class ReduceAction473
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction474
+private class ReduceAction950
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12053,7 +34666,7 @@ private class ReduceAction474
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction475
+private class ReduceAction951
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12066,7 +34679,7 @@ private class ReduceAction475
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction477
+private class ReduceAction953
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12079,7 +34692,7 @@ private class ReduceAction477
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction478
+private class ReduceAction954
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12092,7 +34705,7 @@ private class ReduceAction478
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction480
+private class ReduceAction956
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12103,7 +34716,7 @@ private class ReduceAction480
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction481
+private class ReduceAction957
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12112,7 +34725,7 @@ private class ReduceAction481
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction484
+private class ReduceAction960
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12129,7 +34742,7 @@ private class ReduceAction484
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction485
+private class ReduceAction961
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12143,22 +34756,157 @@ private class ReduceAction485
                                        var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
-                                       node_list = pdocnode1
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction964
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       node_list = null
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction966
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       node_list = null
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction967
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode1 = nodearraylist2
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction968
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode1 = nodearraylist3
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction970
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode1 = nodearraylist4
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction972
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode1 = nodearraylist1
+                                       node_list = pdocnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction973
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction976
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction1515
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tattridnode4 = nodearraylist4
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
+                                               pexprnode3,
+                                               tattridnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction488
+private class ReduceAction1516
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tidnode6 = nodearraylist3
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
+                                       )
+                                       var pexprsnode7 = nodearraylist4
+                                       assert pexprsnode7 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction490
+private class ReduceAction1517
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12166,79 +34914,237 @@ private class ReduceAction490
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tidnode6 = nodearraylist3
+                                       assert tidnode6 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               null,
+                                               tidnode6
+                                       )
+                                       var listnode8 = new Array[Object]
+                                       var pexprsnode7: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode8
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode7
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction491
+private class ReduceAction1518
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode1 = nodearraylist2
-                                       node_list = pdocnode1
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist3
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist4
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
+                                       )
+                                       var pexprsnode9 = nodearraylist5
+                                       assert pexprsnode9 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction492
+private class ReduceAction1519
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode1 = nodearraylist3
-                                       node_list = pdocnode1
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode6 = new Array[Object]
+                                       var tclassidnode7 = nodearraylist3
+                                       assert tclassidnode7 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode6,
+                                               tclassidnode7
+                                       )
+                                       var tidnode8 = nodearraylist4
+                                       assert tidnode8 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode8
+                                       )
+                                       var listnode10 = new Array[Object]
+                                       var pexprsnode9: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode10
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode9
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction494
+private class ReduceAction1520
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode1 = nodearraylist4
-                                       node_list = pdocnode1
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist4
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist6
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction496
+private class ReduceAction1521
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode1 = nodearraylist1
-                                       node_list = pdocnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction497
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var tclassidnode8 = nodearraylist4
+                                       assert tclassidnode8 isa nullable TClassid
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               tclassidnode8
+                                       )
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction500
+private class ReduceAction1522
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
+                                       )
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var pexprsnode10 = nodearraylist5
+                                       assert pexprsnode10 isa nullable AExprs
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
+                                               pexprnode3,
+                                               pqidnode4,
+                                               pexprsnode10
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction871
+private class ReduceAction1523
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12247,22 +35153,39 @@ private class ReduceAction871
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var tampnode2 = nodearraylist1
+                                       assert tampnode2 isa nullable TAmp
                                        var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
-                                       var tattridnode4 = nodearraylist4
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var pqualifiednode5: nullable AQualified = new AQualified.init_aqualified(
+                                               listnode7,
+                                               null
+                                       )
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pqidnode4: nullable AQid = new AQid.init_aqid(
+                                               pqualifiednode5,
+                                               tidnode9
+                                       )
+                                       var listnode11 = new Array[Object]
+                                       var pexprsnode10: nullable AListExprs = new AListExprs.init_alistexprs(
+                                               listnode11
+                                       )
+                                       var pexprnode1: nullable ACallrefExpr = new ACallrefExpr.init_acallrefexpr(
+                                               tampnode2,
                                                pexprnode3,
-                                               tattridnode4
+                                               pqidnode4,
+                                               pexprsnode10
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction873
+private class ReduceAction1525
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12282,7 +35205,7 @@ private class ReduceAction873
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction874
+private class ReduceAction1526
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12309,7 +35232,7 @@ private class ReduceAction874
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction875
+private class ReduceAction1527
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12337,7 +35260,7 @@ private class ReduceAction875
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction876
+private class ReduceAction1528
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12372,7 +35295,7 @@ private class ReduceAction876
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction877
+private class ReduceAction1529
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12408,7 +35331,7 @@ private class ReduceAction877
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction878
+private class ReduceAction1530
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12447,7 +35370,7 @@ private class ReduceAction878
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction879
+private class ReduceAction1531
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12487,7 +35410,7 @@ private class ReduceAction879
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction880
+private class ReduceAction1532
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12523,7 +35446,7 @@ private class ReduceAction880
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction881
+private class ReduceAction1533
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12560,7 +35483,7 @@ private class ReduceAction881
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction884
+private class ReduceAction1536
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12583,7 +35506,7 @@ private class ReduceAction884
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction885
+private class ReduceAction1537
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12607,7 +35530,7 @@ private class ReduceAction885
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction909
+private class ReduceAction1564
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12620,7 +35543,28 @@ private class ReduceAction909
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction910
+private class ReduceAction1565
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tquestnode3 = nodearraylist2
+                                       assert tquestnode3 isa nullable TQuest
+                                       var pexprnode1: nullable ASafeExpr = new ASafeExpr.init_asafeexpr(
+                                               pexprnode2,
+                                               tquestnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction1566
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12630,7 +35574,7 @@ private class ReduceAction910
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1078
+private class ReduceAction1750
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12645,7 +35589,7 @@ private class ReduceAction1078
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1079
+private class ReduceAction1751
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12664,7 +35608,7 @@ private class ReduceAction1079
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1080
+private class ReduceAction1752
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12679,7 +35623,7 @@ private class ReduceAction1080
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1081
+private class ReduceAction1753
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12698,7 +35642,7 @@ private class ReduceAction1081
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1082
+private class ReduceAction1754
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12713,7 +35657,7 @@ private class ReduceAction1082
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1083
+private class ReduceAction1755
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12732,7 +35676,7 @@ private class ReduceAction1083
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1085
+private class ReduceAction1757
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12751,7 +35695,7 @@ private class ReduceAction1085
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1087
+private class ReduceAction1759
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12770,7 +35714,7 @@ private class ReduceAction1087
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1089
+private class ReduceAction1761
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12789,7 +35733,7 @@ private class ReduceAction1089
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1090
+private class ReduceAction1762
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12804,7 +35748,7 @@ private class ReduceAction1090
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1091
+private class ReduceAction1763
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12823,7 +35767,7 @@ private class ReduceAction1091
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1092
+private class ReduceAction1764
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12838,7 +35782,7 @@ private class ReduceAction1092
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1093
+private class ReduceAction1765
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12857,7 +35801,7 @@ private class ReduceAction1093
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1095
+private class ReduceAction1767
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12876,7 +35820,7 @@ private class ReduceAction1095
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1097
+private class ReduceAction1769
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12895,7 +35839,7 @@ private class ReduceAction1097
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1103
+private class ReduceAction1775
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12913,7 +35857,7 @@ private class ReduceAction1103
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1111
+private class ReduceAction1783
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12932,7 +35876,7 @@ private class ReduceAction1111
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1112
+private class ReduceAction1784
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12947,7 +35891,7 @@ private class ReduceAction1112
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction1113
+private class ReduceAction1785
        super ReduceAction
        redef fun action(p: Parser)
        do
index 2f42bfc..07db08a 100644 (file)
@@ -295,6 +295,9 @@ end
 class TBang
        super Token
 end
+class TQuest
+       super Token
+end
 class TAt
        super Token
 end
@@ -997,6 +1000,13 @@ class ACallExpr
        var n_qid: AQid is writable, noinit
        var n_args: AExprs is writable, noinit
 end
+class ACallrefExpr
+       super AExpr
+       var n_amp: TAmp is writable, noinit
+       var n_expr: AExpr is writable, noinit
+       var n_qid: AQid is writable, noinit
+       var n_args: AExprs is writable, noinit
+end
 class ACallAssignExpr
        super AExpr
        var n_expr: AExpr is writable, noinit
@@ -1152,6 +1162,13 @@ class ASuperstringExpr
        var n_exprs: List[AExpr] = new List[AExpr]
        var n_annotations: nullable AAnnotations = null is writable
 end
+class ALambdaExpr
+       super AExpr
+       var n_kwmeth: TKwmeth is writable, noinit
+       var n_signature: ASignature is writable, noinit
+       var n_kwdo: TKwdo is writable, noinit
+       var n_expr: AExpr is writable, noinit
+end
 class AParExpr
        super AExpr
        var n_opar: TOpar is writable, noinit
@@ -1200,6 +1217,11 @@ class ANamedargExpr
        var n_assign: TAssign is writable, noinit
        var n_expr: AExpr is writable, noinit
 end
+class ASafeExpr
+       super AExpr
+       var n_expr: AExpr is writable, noinit
+       var n_quest: TQuest is writable, noinit
+end
 class ATypeExpr
        super AExpr
        var n_type: AType is writable, noinit
index 0c535c2..f19547d 100644 (file)
@@ -983,6 +983,11 @@ class TStarship
        super TokenOperator
 end
 
+# The operator `?`
+class TQuest
+       super TokenOperator
+end
+
 # The operator `!`
 class TBang
        super TokenOperator
@@ -2451,6 +2456,27 @@ class ACallReassignExpr
        super ASendReassignFormExpr
 end
 
+# A reference to a method with a captured receiver. eg. `&x.foo` or just `&foo` is self is captured.
+#
+# Currently, the syntax is analogous to a simple call (`recv.foo`) with a prefix `&`.
+# On chains, only the last call is captured (`.` has a higher precedence than `&`).
+#
+# The syntax is analogous to a call (except the &), there is always a receiver (including the implicit self or sys) and arguments are accepted by the parser.
+#
+# TODO There is no clear syntax proposal
+#
+# * to avoid the capture of a receiver since a receiver is statically expected to resolve the method name
+# * for special method names (setters, brackets and operators)
+#
+# Note: The class specializes `ASendExpr` (trough `ACallFormExpr`) so some behavior of a genuine send expression must be redefined.
+class ACallrefExpr
+       super ACallFormExpr
+
+       # The `&` operator
+       var n_amp: TAmp is writable, noinit
+end
+
+
 # A call to `super`. OR a call of a super-constructor
 class ASuperExpr
        super AExpr
@@ -2681,6 +2707,14 @@ class ASuperstringExpr
        var n_exprs = new ANodes[AExpr](self)
 end
 
+class ALambdaExpr
+       super AExpr
+       var n_kwmeth: TKwmeth is writable, noinit
+       var n_signature: ASignature is writable, noinit
+       var n_kwdo: TKwdo is writable, noinit
+       var n_expr: AExpr is writable, noinit
+end
+
 # A simple parenthesis. eg `(x)`
 class AParExpr
        super AExpr
@@ -2750,6 +2784,17 @@ class AVarargExpr
        var n_dotdotdot: TDotdotdot is writable, noinit
 end
 
+# A receiver with a `?` suffix used in safe call operator.
+class ASafeExpr
+       super AExpr
+
+       # The expression made safe
+       var n_expr: AExpr is writable, noinit
+
+       # The `?` symbol
+       var n_quest: TQuest is writable, noinit
+end
+
 # An named notation used to pass an expression by name in a parameter
 class ANamedargExpr
        super AExpr
index b44947f..f1bd5d9 100644 (file)
@@ -5433,6 +5433,74 @@ redef class ACallExpr
                v.enter_visit(_n_args)
        end
 end
+redef class ACallrefExpr
+       init init_acallrefexpr (
+               n_amp: nullable TAmp,
+               n_expr: nullable AExpr,
+               n_qid: nullable AQid,
+               n_args: nullable AExprs
+       )
+       do
+               _n_amp = n_amp.as(not null)
+               n_amp.parent = self
+               _n_expr = n_expr.as(not null)
+               n_expr.parent = self
+               _n_qid = n_qid.as(not null)
+               n_qid.parent = self
+               _n_args = n_args.as(not null)
+               n_args.parent = self
+       end
+
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+       do
+               if _n_amp == old_child then
+                       n_amp = new_child.as(TAmp)
+                       return
+               end
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+               if _n_qid == old_child then
+                       n_qid = new_child.as(AQid)
+                       return
+               end
+               if _n_args == old_child then
+                       n_args = new_child.as(AExprs)
+                       return
+               end
+       end
+
+       redef fun n_amp=(node)
+       do
+               _n_amp = node
+               node.parent = self
+       end
+       redef fun n_expr=(node)
+       do
+               _n_expr = node
+               node.parent = self
+       end
+       redef fun n_qid=(node)
+       do
+               _n_qid = node
+               node.parent = self
+       end
+       redef fun n_args=(node)
+       do
+               _n_args = node
+               node.parent = self
+       end
+
+
+       redef fun visit_all(v: Visitor)
+       do
+               v.enter_visit(_n_amp)
+               v.enter_visit(_n_expr)
+               v.enter_visit(_n_qid)
+               v.enter_visit(_n_args)
+       end
+end
 redef class ACallAssignExpr
        init init_acallassignexpr (
                n_expr: nullable AExpr,
@@ -6808,6 +6876,74 @@ redef class ASuperstringExpr
                v.enter_visit(_n_annotations)
        end
 end
+redef class ALambdaExpr
+       init init_alambdaexpr (
+               n_kwmeth: nullable TKwmeth,
+               n_signature: nullable ASignature,
+               n_kwdo: nullable TKwdo,
+               n_expr: nullable AExpr
+       )
+       do
+               _n_kwmeth = n_kwmeth.as(not null)
+               n_kwmeth.parent = self
+               _n_signature = n_signature.as(not null)
+               n_signature.parent = self
+               _n_kwdo = n_kwdo.as(not null)
+               n_kwdo.parent = self
+               _n_expr = n_expr.as(not null)
+               n_expr.parent = self
+       end
+
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+       do
+               if _n_kwmeth == old_child then
+                       n_kwmeth = new_child.as(TKwmeth)
+                       return
+               end
+               if _n_signature == old_child then
+                       n_signature = new_child.as(ASignature)
+                       return
+               end
+               if _n_kwdo == old_child then
+                       n_kwdo = new_child.as(TKwdo)
+                       return
+               end
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+       end
+
+       redef fun n_kwmeth=(node)
+       do
+               _n_kwmeth = node
+               node.parent = self
+       end
+       redef fun n_signature=(node)
+       do
+               _n_signature = node
+               node.parent = self
+       end
+       redef fun n_kwdo=(node)
+       do
+               _n_kwdo = node
+               node.parent = self
+       end
+       redef fun n_expr=(node)
+       do
+               _n_expr = node
+               node.parent = self
+       end
+
+
+       redef fun visit_all(v: Visitor)
+       do
+               v.enter_visit(_n_kwmeth)
+               v.enter_visit(_n_signature)
+               v.enter_visit(_n_kwdo)
+               v.enter_visit(_n_expr)
+       end
+end
 redef class AParExpr
        init init_aparexpr (
                n_opar: nullable TOpar,
@@ -7271,6 +7407,48 @@ redef class ANamedargExpr
                v.enter_visit(_n_expr)
        end
 end
+redef class ASafeExpr
+       init init_asafeexpr (
+               n_expr: nullable AExpr,
+               n_quest: nullable TQuest
+       )
+       do
+               _n_expr = n_expr.as(not null)
+               n_expr.parent = self
+               _n_quest = n_quest.as(not null)
+               n_quest.parent = self
+       end
+
+       redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+       do
+               if _n_expr == old_child then
+                       n_expr = new_child.as(AExpr)
+                       return
+               end
+               if _n_quest == old_child then
+                       n_quest = new_child.as(TQuest)
+                       return
+               end
+       end
+
+       redef fun n_expr=(node)
+       do
+               _n_expr = node
+               node.parent = self
+       end
+       redef fun n_quest=(node)
+       do
+               _n_quest = node
+               node.parent = self
+       end
+
+
+       redef fun visit_all(v: Visitor)
+       do
+               v.enter_visit(_n_expr)
+               v.enter_visit(_n_quest)
+       end
+end
 redef class ATypeExpr
        init init_atypeexpr (
                n_type: nullable AType
index e424dc6..da21c6f 100644 (file)
@@ -3,7 +3,7 @@
 #include "tables_nit.h"
 
 static const int lexer_goto_row1[] = {
-       59,
+       60,
        9, 9, 1,
        10, 10, 2,
        13, 13, 3,
@@ -29,40 +29,41 @@ static const int lexer_goto_row1[] = {
        60, 60, 23,
        61, 61, 24,
        62, 62, 25,
-       64, 64, 26,
-       65, 90, 27,
-       91, 91, 28,
-       93, 93, 29,
-       94, 94, 30,
-       95, 95, 31,
-       96, 96, 32,
-       97, 97, 33,
-       98, 98, 34,
-       99, 99, 35,
-       100, 100, 36,
-       101, 101, 37,
-       102, 102, 38,
-       103, 104, 39,
-       105, 105, 40,
-       106, 107, 39,
-       108, 108, 41,
-       109, 109, 42,
-       110, 110, 43,
-       111, 111, 44,
-       112, 112, 45,
-       113, 113, 39,
-       114, 114, 46,
-       115, 115, 47,
-       116, 116, 48,
-       117, 117, 49,
-       118, 118, 50,
-       119, 119, 51,
-       120, 120, 39,
-       121, 121, 52,
-       122, 122, 39,
-       124, 124, 53,
-       125, 125, 54,
-       126, 126, 55
+       63, 63, 26,
+       64, 64, 27,
+       65, 90, 28,
+       91, 91, 29,
+       93, 93, 30,
+       94, 94, 31,
+       95, 95, 32,
+       96, 96, 33,
+       97, 97, 34,
+       98, 98, 35,
+       99, 99, 36,
+       100, 100, 37,
+       101, 101, 38,
+       102, 102, 39,
+       103, 104, 40,
+       105, 105, 41,
+       106, 107, 40,
+       108, 108, 42,
+       109, 109, 43,
+       110, 110, 44,
+       111, 111, 45,
+       112, 112, 46,
+       113, 113, 40,
+       114, 114, 47,
+       115, 115, 48,
+       116, 116, 49,
+       117, 117, 50,
+       118, 118, 51,
+       119, 119, 52,
+       120, 120, 40,
+       121, 121, 53,
+       122, 122, 40,
+       124, 124, 54,
+       125, 125, 55,
+       126, 126, 56
 };
 static const int lexer_goto_row2[] = {
        2,
@@ -71,7 +72,7 @@ static const int lexer_goto_row2[] = {
 };
 static const int lexer_goto_row4[] = {
        1,
-       10, 10, 56
+       10, 10, 57
 };
 static const int lexer_goto_row5[] = {
        1,
@@ -79,2462 +80,2462 @@ static const int lexer_goto_row5[] = {
 };
 static const int lexer_goto_row6[] = {
        1,
-       61, 61, 57
+       61, 61, 58
 };
 static const int lexer_goto_row7[] = {
        9,
-       0, 9, 58,
-       11, 12, 58,
-       14, 33, 58,
-       34, 34, 59,
-       35, 91, 58,
-       92, 92, 60,
-       93, 122, 58,
-       123, 123, 61,
-       124, 255, 58
+       0, 9, 59,
+       11, 12, 59,
+       14, 33, 59,
+       34, 34, 60,
+       35, 91, 59,
+       92, 92, 61,
+       93, 122, 59,
+       123, 123, 62,
+       124, 255, 59
 };
 static const int lexer_goto_row8[] = {
        5,
-       0, 9, 62,
-       10, 10, 63,
-       11, 12, 62,
-       13, 13, 64,
-       14, 255, 62
+       0, 9, 63,
+       10, 10, 64,
+       11, 12, 63,
+       13, 13, 65,
+       14, 255, 63
 };
 static const int lexer_goto_row9[] = {
        1,
-       61, 61, 65
+       61, 61, 66
 };
 static const int lexer_goto_row10[] = {
        1,
-       61, 61, 66
+       61, 61, 67
 };
 static const int lexer_goto_row11[] = {
        7,
-       0, 9, 67,
-       11, 12, 67,
-       14, 38, 67,
-       39, 39, 68,
-       40, 91, 67,
-       92, 92, 69,
-       93, 255, 67
+       0, 9, 68,
+       11, 12, 68,
+       14, 38, 68,
+       39, 39, 69,
+       40, 91, 68,
+       92, 92, 70,
+       93, 255, 68
 };
 static const int lexer_goto_row14[] = {
        2,
-       42, 42, 70,
-       61, 61, 71
+       42, 42, 71,
+       61, 61, 72
 };
 static const int lexer_goto_row15[] = {
        1,
-       61, 61, 72
+       61, 61, 73
 };
 static const int lexer_goto_row17[] = {
        1,
-       61, 61, 73
+       61, 61, 74
 };
 static const int lexer_goto_row18[] = {
        2,
-       46, 46, 74,
-       48, 57, 75
+       46, 46, 75,
+       48, 57, 76
 };
 static const int lexer_goto_row19[] = {
        1,
-       61, 61, 76
+       61, 61, 77
 };
 static const int lexer_goto_row20[] = {
        13,
-       46, 46, 77,
-       48, 57, 78,
-       66, 66, 79,
-       69, 69, 80,
-       79, 79, 81,
-       88, 88, 82,
-       95, 95, 83,
-       98, 98, 84,
-       101, 101, 85,
-       105, 105, 86,
-       111, 111, 87,
-       117, 117, 88,
-       120, 120, 89
+       46, 46, 78,
+       48, 57, 79,
+       66, 66, 80,
+       69, 69, 81,
+       79, 79, 82,
+       88, 88, 83,
+       95, 95, 84,
+       98, 98, 85,
+       101, 101, 86,
+       105, 105, 87,
+       111, 111, 88,
+       117, 117, 89,
+       120, 120, 90
 };
 static const int lexer_goto_row21[] = {
        5,
        46, 57, -21,
-       69, 69, 80,
-       95, 95, 83,
+       69, 69, 81,
+       95, 95, 84,
        101, 105, -21,
-       117, 117, 88
+       117, 117, 89
 };
 static const int lexer_goto_row22[] = {
        1,
-       58, 58, 90
+       58, 58, 91
 };
 static const int lexer_goto_row24[] = {
        2,
-       60, 60, 91,
-       61, 61, 92
+       60, 60, 92,
+       61, 61, 93
 };
 static const int lexer_goto_row25[] = {
        1,
-       61, 61, 93
+       61, 61, 94
 };
 static const int lexer_goto_row26[] = {
        2,
-       61, 61, 94,
-       62, 62, 95
+       61, 61, 95,
+       62, 62, 96
 };
-static const int lexer_goto_row28[] = {
+static const int lexer_goto_row29[] = {
        4,
-       48, 57, 96,
-       65, 90, 97,
-       95, 95, 98,
-       97, 122, 99
-};
-static const int lexer_goto_row31[] = {
-       1,
-       61, 61, 100
+       48, 57, 97,
+       65, 90, 98,
+       95, 95, 99,
+       97, 122, 100
 };
 static const int lexer_goto_row32[] = {
-       2,
-       95, 95, 101,
-       97, 122, 102
+       1,
+       61, 61, 101
 };
 static const int lexer_goto_row33[] = {
-       1,
-       123, 123, 103
+       2,
+       95, 95, 102,
+       97, 122, 103
 };
 static const int lexer_goto_row34[] = {
-       12,
-       34, 34, 104,
-       39, 39, 105,
-       48, 57, 106,
-       65, 90, 107,
-       95, 95, 108,
-       97, 97, 109,
-       98, 98, 110,
-       99, 109, 109,
-       110, 110, 111,
-       111, 114, 109,
-       115, 115, 112,
-       116, 122, 109
+       1,
+       123, 123, 104
 };
 static const int lexer_goto_row35[] = {
-       4,
-       34, 95, -35,
-       97, 113, 109,
-       114, 114, 113,
-       115, 122, 109
+       12,
+       34, 34, 105,
+       39, 39, 106,
+       48, 57, 107,
+       65, 90, 108,
+       95, 95, 109,
+       97, 97, 110,
+       98, 98, 111,
+       99, 109, 110,
+       110, 110, 112,
+       111, 114, 110,
+       115, 115, 113,
+       116, 122, 110
 };
 static const int lexer_goto_row36[] = {
-       7,
-       34, 95, -35,
-       97, 97, 114,
-       98, 107, 109,
-       108, 108, 115,
-       109, 110, 109,
-       111, 111, 116,
-       112, 122, 109
+       4,
+       34, 95, -36,
+       97, 113, 110,
+       114, 114, 114,
+       115, 122, 110
 };
 static const int lexer_goto_row37[] = {
-       4,
-       34, 95, -35,
-       97, 110, 109,
+       7,
+       34, 95, -36,
+       97, 97, 115,
+       98, 107, 110,
+       108, 108, 116,
+       109, 110, 110,
        111, 111, 117,
-       112, 122, 109
+       112, 122, 110
 };
 static const int lexer_goto_row38[] = {
-       8,
-       34, 95, -35,
-       97, 107, 109,
-       108, 108, 118,
-       109, 109, 109,
-       110, 110, 119,
-       111, 119, 109,
-       120, 120, 120,
-       121, 122, 109
+       4,
+       34, 95, -36,
+       97, 110, 110,
+       111, 111, 118,
+       112, 122, 110
 };
 static const int lexer_goto_row39[] = {
-       7,
-       34, 95, -35,
-       97, 97, 121,
-       98, 110, 109,
-       111, 111, 122,
-       112, 116, 109,
-       117, 117, 123,
-       118, 122, 109
+       8,
+       34, 95, -36,
+       97, 107, 110,
+       108, 108, 119,
+       109, 109, 110,
+       110, 110, 120,
+       111, 119, 110,
+       120, 120, 121,
+       121, 122, 110
 };
 static const int lexer_goto_row40[] = {
-       2,
-       34, 95, -35,
-       97, 122, 109
+       7,
+       34, 95, -36,
+       97, 97, 122,
+       98, 110, 110,
+       111, 111, 123,
+       112, 116, 110,
+       117, 117, 124,
+       118, 122, 110
 };
 static const int lexer_goto_row41[] = {
-       9,
-       34, 95, -35,
-       97, 101, 109,
-       102, 102, 124,
-       103, 108, 109,
-       109, 109, 125,
-       110, 110, 126,
-       111, 114, 109,
-       115, 115, 127,
-       116, 122, 109
+       2,
+       34, 95, -36,
+       97, 122, 110
 };
 static const int lexer_goto_row42[] = {
-       5,
-       34, 95, -35,
-       97, 97, 128,
-       98, 110, 109,
-       111, 111, 129,
-       112, 122, 109
+       9,
+       34, 95, -36,
+       97, 101, 110,
+       102, 102, 125,
+       103, 108, 110,
+       109, 109, 126,
+       110, 110, 127,
+       111, 114, 110,
+       115, 115, 128,
+       116, 122, 110
 };
 static const int lexer_goto_row43[] = {
-       3,
-       34, 110, -38,
+       5,
+       34, 95, -36,
+       97, 97, 129,
+       98, 110, 110,
        111, 111, 130,
-       112, 122, 109
+       112, 122, 110
 };
 static const int lexer_goto_row44[] = {
-       8,
-       34, 95, -35,
-       97, 100, 109,
-       101, 101, 131,
-       102, 110, 109,
-       111, 111, 132,
-       112, 116, 109,
-       117, 117, 133,
-       118, 122, 109
+       3,
+       34, 110, -39,
+       111, 111, 131,
+       112, 122, 110
 };
 static const int lexer_goto_row45[] = {
-       6,
-       34, 95, -35,
-       97, 109, 109,
-       110, 110, 134,
-       111, 113, 109,
-       114, 114, 135,
-       115, 122, 109
+       8,
+       34, 95, -36,
+       97, 100, 110,
+       101, 101, 132,
+       102, 110, 110,
+       111, 111, 133,
+       112, 116, 110,
+       117, 117, 134,
+       118, 122, 110
 };
 static const int lexer_goto_row46[] = {
-       7,
-       34, 95, -35,
-       97, 97, 136,
-       98, 113, 109,
-       114, 114, 137,
-       115, 116, 109,
-       117, 117, 138,
-       118, 122, 109
+       6,
+       34, 95, -36,
+       97, 109, 110,
+       110, 110, 135,
+       111, 113, 110,
+       114, 114, 136,
+       115, 122, 110
 };
 static const int lexer_goto_row47[] = {
-       3,
-       34, 100, -45,
-       101, 101, 139,
-       102, 122, 109
+       7,
+       34, 95, -36,
+       97, 97, 137,
+       98, 113, 110,
+       114, 114, 138,
+       115, 116, 110,
+       117, 117, 139,
+       118, 122, 110
 };
 static const int lexer_goto_row48[] = {
-       5,
-       34, 100, -45,
+       3,
+       34, 100, -46,
        101, 101, 140,
-       102, 116, 109,
-       117, 117, 141,
-       118, 122, 109
+       102, 122, 110
 };
 static const int lexer_goto_row49[] = {
-       8,
-       34, 95, -35,
-       97, 103, 109,
-       104, 104, 142,
-       105, 113, 109,
-       114, 114, 143,
-       115, 120, 109,
-       121, 121, 144,
-       122, 122, 109
+       5,
+       34, 100, -46,
+       101, 101, 141,
+       102, 116, 110,
+       117, 117, 142,
+       118, 122, 110
 };
 static const int lexer_goto_row50[] = {
-       3,
-       34, 109, -46,
-       110, 110, 145,
-       111, 122, 109
+       8,
+       34, 95, -36,
+       97, 103, 110,
+       104, 104, 143,
+       105, 113, 110,
+       114, 114, 144,
+       115, 120, 110,
+       121, 121, 145,
+       122, 122, 110
 };
 static const int lexer_goto_row51[] = {
        3,
-       34, 95, -35,
-       97, 97, 146,
-       98, 122, 109
+       34, 109, -47,
+       110, 110, 146,
+       111, 122, 110
 };
 static const int lexer_goto_row52[] = {
-       4,
-       34, 103, -50,
-       104, 104, 147,
-       105, 105, 148,
-       106, 122, 109
+       3,
+       34, 95, -36,
+       97, 97, 147,
+       98, 122, 110
 };
 static const int lexer_goto_row53[] = {
        4,
-       34, 95, -35,
-       97, 104, 109,
+       34, 103, -51,
+       104, 104, 148,
        105, 105, 149,
-       106, 122, 109
+       106, 122, 110
 };
 static const int lexer_goto_row54[] = {
-       1,
-       61, 61, 150
+       4,
+       34, 95, -36,
+       97, 104, 110,
+       105, 105, 150,
+       106, 122, 110
 };
 static const int lexer_goto_row55[] = {
+       1,
+       61, 61, 151
+};
+static const int lexer_goto_row56[] = {
        11,
-       0, 9, 151,
-       11, 12, 151,
-       14, 33, 151,
-       34, 34, 152,
-       35, 91, 151,
-       92, 92, 153,
-       93, 122, 151,
-       123, 123, 154,
-       124, 124, 151,
-       125, 125, 155,
-       126, 255, 151
-};
-static const int lexer_goto_row59[] = {
+       0, 9, 152,
+       11, 12, 152,
+       14, 33, 152,
+       34, 34, 153,
+       35, 91, 152,
+       92, 92, 154,
+       93, 122, 152,
+       123, 123, 155,
+       124, 124, 152,
+       125, 125, 156,
+       126, 255, 152
+};
+static const int lexer_goto_row60[] = {
        3,
        0, 33, -8,
-       34, 34, 156,
+       34, 34, 157,
        35, 255, -8
 };
-static const int lexer_goto_row60[] = {
+static const int lexer_goto_row61[] = {
        2,
-       34, 34, 157,
-       97, 122, 158
+       34, 34, 158,
+       97, 122, 159
 };
-static const int lexer_goto_row61[] = {
+static const int lexer_goto_row62[] = {
        3,
-       0, 9, 159,
-       11, 12, 159,
-       14, 255, 159
+       0, 9, 160,
+       11, 12, 160,
+       14, 255, 160
 };
-static const int lexer_goto_row63[] = {
+static const int lexer_goto_row64[] = {
        1,
        0, 255, -9
 };
-static const int lexer_goto_row65[] = {
-       1,
-       10, 10, 160
-};
-static const int lexer_goto_row68[] = {
+static const int lexer_goto_row66[] = {
        1,
-       39, 39, 161
+       10, 10, 161
 };
 static const int lexer_goto_row69[] = {
        1,
        39, 39, 162
 };
 static const int lexer_goto_row70[] = {
-       3,
-       0, 9, 163,
-       11, 12, 163,
-       14, 255, 163
+       1,
+       39, 39, 163
 };
 static const int lexer_goto_row71[] = {
-       1,
-       61, 61, 164
+       3,
+       0, 9, 164,
+       11, 12, 164,
+       14, 255, 164
 };
-static const int lexer_goto_row75[] = {
+static const int lexer_goto_row72[] = {
        1,
-       46, 46, 165
+       61, 61, 165
 };
 static const int lexer_goto_row76[] = {
-       3,
-       48, 57, 75,
-       69, 69, 80,
-       101, 101, 85
-};
-static const int lexer_goto_row78[] = {
        1,
-       48, 57, 75
+       46, 46, 166
+};
+static const int lexer_goto_row77[] = {
+       3,
+       48, 57, 76,
+       69, 69, 81,
+       101, 101, 86
 };
 static const int lexer_goto_row79[] = {
        1,
-       46, 117, -22
+       48, 57, 76
 };
 static const int lexer_goto_row80[] = {
-       3,
-       48, 48, 166,
-       49, 49, 167,
-       95, 95, 168
+       1,
+       46, 117, -22
 };
 static const int lexer_goto_row81[] = {
        3,
-       43, 43, 169,
-       45, 45, 170,
-       48, 57, 171
+       48, 48, 167,
+       49, 49, 168,
+       95, 95, 169
 };
 static const int lexer_goto_row82[] = {
-       2,
-       48, 55, 172,
-       95, 95, 173
+       3,
+       43, 43, 170,
+       45, 45, 171,
+       48, 57, 172
 };
 static const int lexer_goto_row83[] = {
-       4,
-       48, 57, 174,
-       65, 70, 175,
-       95, 95, 176,
-       97, 102, 177
+       2,
+       48, 55, 173,
+       95, 95, 174
 };
 static const int lexer_goto_row84[] = {
-       3,
-       48, 57, 178,
-       95, 95, 83,
-       105, 117, -22
+       4,
+       48, 57, 175,
+       65, 70, 176,
+       95, 95, 177,
+       97, 102, 178
 };
 static const int lexer_goto_row85[] = {
-       1,
-       48, 95, -81
+       3,
+       48, 57, 179,
+       95, 95, 84,
+       105, 117, -22
 };
 static const int lexer_goto_row86[] = {
        1,
-       43, 57, -82
+       48, 95, -82
 };
 static const int lexer_goto_row87[] = {
-       3,
-       49, 49, 179,
-       51, 51, 180,
-       56, 56, 181
+       1,
+       43, 57, -83
 };
 static const int lexer_goto_row88[] = {
-       1,
-       48, 95, -83
+       3,
+       49, 49, 180,
+       51, 51, 181,
+       56, 56, 182
 };
 static const int lexer_goto_row89[] = {
-       3,
-       49, 49, 182,
-       51, 51, 183,
-       56, 56, 184
+       1,
+       48, 95, -84
 };
 static const int lexer_goto_row90[] = {
-       1,
-       48, 102, -84
+       3,
+       49, 49, 183,
+       51, 51, 184,
+       56, 56, 185
 };
-static const int lexer_goto_row92[] = {
+static const int lexer_goto_row91[] = {
        1,
-       61, 61, 185
+       48, 102, -85
 };
 static const int lexer_goto_row93[] = {
        1,
-       62, 62, 186
+       61, 61, 186
 };
-static const int lexer_goto_row96[] = {
+static const int lexer_goto_row94[] = {
        1,
-       61, 61, 187
+       62, 62, 187
 };
 static const int lexer_goto_row97[] = {
        1,
-       48, 122, -29
+       61, 61, 188
 };
 static const int lexer_goto_row98[] = {
        1,
-       48, 122, -29
+       48, 122, -30
 };
 static const int lexer_goto_row99[] = {
        1,
-       48, 122, -29
+       48, 122, -30
 };
 static const int lexer_goto_row100[] = {
        1,
-       48, 122, -29
+       48, 122, -30
 };
-static const int lexer_goto_row102[] = {
+static const int lexer_goto_row101[] = {
        1,
-       100, 100, 188
+       48, 122, -30
 };
 static const int lexer_goto_row103[] = {
-       4,
-       48, 57, 189,
-       65, 90, 190,
-       95, 95, 191,
-       97, 122, 192
+       1,
+       100, 100, 189
 };
 static const int lexer_goto_row104[] = {
-       5,
-       0, 91, 193,
-       92, 92, 194,
-       93, 95, 193,
-       96, 96, 195,
-       97, 255, 193
+       4,
+       48, 57, 190,
+       65, 90, 191,
+       95, 95, 192,
+       97, 122, 193
 };
 static const int lexer_goto_row105[] = {
-       9,
-       0, 9, 196,
-       11, 12, 196,
-       14, 33, 196,
-       34, 34, 197,
-       35, 91, 196,
-       92, 92, 198,
-       93, 122, 196,
-       123, 123, 61,
-       124, 255, 196
+       5,
+       0, 91, 194,
+       92, 92, 195,
+       93, 95, 194,
+       96, 96, 196,
+       97, 255, 194
 };
 static const int lexer_goto_row106[] = {
-       7,
-       0, 9, 199,
-       11, 12, 199,
-       14, 38, 199,
-       39, 39, 200,
-       40, 91, 199,
-       92, 92, 201,
-       93, 255, 199
+       9,
+       0, 9, 197,
+       11, 12, 197,
+       14, 33, 197,
+       34, 34, 198,
+       35, 91, 197,
+       92, 92, 199,
+       93, 122, 197,
+       123, 123, 62,
+       124, 255, 197
 };
 static const int lexer_goto_row107[] = {
-       1,
-       34, 122, -41
+       7,
+       0, 9, 200,
+       11, 12, 200,
+       14, 38, 200,
+       39, 39, 201,
+       40, 91, 200,
+       92, 92, 202,
+       93, 255, 200
 };
 static const int lexer_goto_row108[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row109[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row110[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row111[] = {
-       5,
-       34, 110, -38,
-       111, 111, 202,
-       112, 114, 109,
-       115, 115, 203,
-       116, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row112[] = {
-       4,
-       34, 95, -35,
-       97, 99, 109,
-       100, 100, 204,
-       101, 122, 109
+       5,
+       34, 110, -39,
+       111, 111, 203,
+       112, 114, 110,
+       115, 115, 204,
+       116, 122, 110
 };
 static const int lexer_goto_row113[] = {
        4,
-       34, 95, -35,
-       97, 114, 109,
-       115, 115, 205,
-       116, 122, 109
+       34, 95, -36,
+       97, 99, 110,
+       100, 100, 205,
+       101, 122, 110
 };
 static const int lexer_goto_row114[] = {
-       3,
-       34, 100, -45,
-       101, 101, 206,
-       102, 122, 109
+       4,
+       34, 95, -36,
+       97, 114, 110,
+       115, 115, 206,
+       116, 122, 110
 };
 static const int lexer_goto_row115[] = {
-       4,
-       34, 95, -35,
-       97, 115, 109,
-       116, 116, 207,
-       117, 122, 109
+       3,
+       34, 100, -46,
+       101, 101, 207,
+       102, 122, 110
 };
 static const int lexer_goto_row116[] = {
-       3,
-       34, 95, -35,
-       97, 97, 208,
-       98, 122, 109
+       4,
+       34, 95, -36,
+       97, 115, 110,
+       116, 116, 208,
+       117, 122, 110
 };
 static const int lexer_goto_row117[] = {
        3,
-       34, 109, -46,
-       110, 110, 209,
-       111, 122, 109
+       34, 95, -36,
+       97, 97, 209,
+       98, 122, 110
 };
 static const int lexer_goto_row118[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 109, -47,
+       110, 110, 210,
+       111, 122, 110
 };
 static const int lexer_goto_row119[] = {
-       3,
-       34, 114, -114,
-       115, 115, 210,
-       116, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row120[] = {
-       5,
-       34, 99, -113,
-       100, 100, 211,
-       101, 116, 109,
-       117, 117, 212,
-       118, 122, 109
+       3,
+       34, 114, -115,
+       115, 115, 211,
+       116, 122, 110
 };
 static const int lexer_goto_row121[] = {
-       3,
-       34, 115, -116,
-       116, 116, 213,
-       117, 122, 109
+       5,
+       34, 99, -114,
+       100, 100, 212,
+       101, 116, 110,
+       117, 117, 213,
+       118, 122, 110
 };
 static const int lexer_goto_row122[] = {
        3,
-       34, 107, -39,
-       108, 108, 214,
-       109, 122, 109
+       34, 115, -117,
+       116, 116, 214,
+       117, 122, 110
 };
 static const int lexer_goto_row123[] = {
        3,
-       34, 113, -36,
-       114, 114, 215,
-       115, 122, 109
+       34, 107, -40,
+       108, 108, 215,
+       109, 122, 110
 };
 static const int lexer_goto_row124[] = {
        3,
-       34, 109, -46,
-       110, 110, 216,
-       111, 122, 109
+       34, 113, -37,
+       114, 114, 216,
+       115, 122, 110
 };
 static const int lexer_goto_row125[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 109, -47,
+       110, 110, 217,
+       111, 122, 110
 };
 static const int lexer_goto_row126[] = {
-       4,
-       34, 95, -35,
-       97, 111, 109,
-       112, 112, 217,
-       113, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row127[] = {
-       5,
-       34, 104, -54,
-       105, 105, 218,
-       106, 115, 109,
-       116, 116, 219,
-       117, 122, 109
+       4,
+       34, 95, -36,
+       97, 111, 110,
+       112, 112, 218,
+       113, 122, 110
 };
 static const int lexer_goto_row128[] = {
        5,
-       34, 95, -35,
-       97, 97, 220,
-       98, 114, 109,
-       115, 115, 221,
-       116, 122, 109
+       34, 104, -55,
+       105, 105, 219,
+       106, 115, 110,
+       116, 116, 220,
+       117, 122, 110
 };
 static const int lexer_goto_row129[] = {
-       3,
-       34, 97, -35,
-       98, 98, 222,
-       99, 122, 109
+       5,
+       34, 95, -36,
+       97, 97, 221,
+       98, 114, 110,
+       115, 115, 222,
+       116, 122, 110
 };
 static const int lexer_goto_row130[] = {
        3,
-       34, 110, -38,
-       111, 111, 223,
-       112, 122, 109
+       34, 97, -36,
+       98, 98, 223,
+       99, 122, 110
 };
 static const int lexer_goto_row131[] = {
        3,
-       34, 99, -113,
-       100, 100, 224,
-       101, 122, 109
+       34, 110, -39,
+       111, 111, 224,
+       112, 122, 110
 };
 static const int lexer_goto_row132[] = {
-       4,
-       34, 95, -35,
-       97, 118, 109,
-       119, 119, 225,
-       120, 122, 109
+       3,
+       34, 99, -114,
+       100, 100, 225,
+       101, 122, 110
 };
 static const int lexer_goto_row133[] = {
-       3,
-       34, 115, -116,
-       116, 116, 226,
-       117, 122, 109
+       4,
+       34, 95, -36,
+       97, 118, 110,
+       119, 119, 226,
+       120, 122, 110
 };
 static const int lexer_goto_row134[] = {
        3,
-       34, 107, -39,
-       108, 108, 227,
-       109, 122, 109
+       34, 115, -117,
+       116, 116, 227,
+       117, 122, 110
 };
 static const int lexer_goto_row135[] = {
-       4,
-       34, 95, -35,
-       97, 98, 109,
-       99, 99, 228,
-       100, 122, 109
+       3,
+       34, 107, -40,
+       108, 108, 228,
+       109, 122, 110
 };
 static const int lexer_goto_row136[] = {
-       1,
-       34, 122, -41
+       4,
+       34, 95, -36,
+       97, 98, 110,
+       99, 99, 229,
+       100, 122, 110
 };
 static const int lexer_goto_row137[] = {
-       3,
-       34, 98, -136,
-       99, 99, 229,
-       100, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row138[] = {
-       5,
-       34, 104, -54,
-       105, 105, 230,
-       106, 110, 109,
-       111, 111, 231,
-       112, 122, 109
+       3,
+       34, 98, -137,
+       99, 99, 230,
+       100, 122, 110
 };
 static const int lexer_goto_row139[] = {
-       3,
-       34, 97, -35,
-       98, 98, 232,
-       99, 122, 109
+       5,
+       34, 104, -55,
+       105, 105, 231,
+       106, 110, 110,
+       111, 111, 232,
+       112, 122, 110
 };
 static const int lexer_goto_row140[] = {
-       5,
-       34, 99, -113,
-       100, 100, 233,
-       101, 115, 109,
-       116, 116, 234,
-       117, 122, 109
+       3,
+       34, 97, -36,
+       98, 98, 233,
+       99, 122, 110
 };
 static const int lexer_goto_row141[] = {
-       3,
-       34, 107, -39,
-       108, 108, 235,
-       109, 122, 109
+       5,
+       34, 99, -114,
+       100, 100, 234,
+       101, 115, 110,
+       116, 116, 235,
+       117, 122, 110
 };
 static const int lexer_goto_row142[] = {
-       5,
-       34, 97, -35,
-       98, 98, 236,
-       99, 111, 109,
-       112, 112, 237,
-       113, 122, 109
+       3,
+       34, 107, -40,
+       108, 108, 236,
+       109, 122, 110
 };
 static const int lexer_goto_row143[] = {
-       3,
-       34, 100, -45,
-       101, 101, 238,
-       102, 122, 109
+       5,
+       34, 97, -36,
+       98, 98, 237,
+       99, 111, 110,
+       112, 112, 238,
+       113, 122, 110
 };
 static const int lexer_goto_row144[] = {
-       4,
-       34, 95, -35,
-       97, 116, 109,
-       117, 117, 239,
-       118, 122, 109
+       3,
+       34, 100, -46,
+       101, 101, 239,
+       102, 122, 110
 };
 static const int lexer_goto_row145[] = {
-       3,
-       34, 111, -127,
-       112, 112, 240,
-       113, 122, 109
+       4,
+       34, 95, -36,
+       97, 116, 110,
+       117, 117, 240,
+       118, 122, 110
 };
 static const int lexer_goto_row146[] = {
        3,
-       34, 104, -54,
-       105, 105, 241,
-       106, 122, 109
+       34, 111, -128,
+       112, 112, 241,
+       113, 122, 110
 };
 static const int lexer_goto_row147[] = {
        3,
-       34, 113, -36,
-       114, 114, 242,
-       115, 122, 109
+       34, 104, -55,
+       105, 105, 242,
+       106, 122, 110
 };
 static const int lexer_goto_row148[] = {
        3,
-       34, 104, -54,
-       105, 105, 243,
-       106, 122, 109
+       34, 113, -37,
+       114, 114, 243,
+       115, 122, 110
 };
 static const int lexer_goto_row149[] = {
        3,
-       34, 115, -116,
-       116, 116, 244,
-       117, 122, 109
+       34, 104, -55,
+       105, 105, 244,
+       106, 122, 110
 };
 static const int lexer_goto_row150[] = {
        3,
-       34, 100, -45,
-       101, 101, 245,
-       102, 122, 109
+       34, 115, -117,
+       116, 116, 245,
+       117, 122, 110
 };
-static const int lexer_goto_row152[] = {
-       2,
-       0, 123, -56,
-       124, 255, 151
+static const int lexer_goto_row151[] = {
+       3,
+       34, 100, -46,
+       101, 101, 246,
+       102, 122, 110
 };
 static const int lexer_goto_row153[] = {
-       1,
-       97, 122, 246
+       2,
+       0, 123, -57,
+       124, 255, 152
 };
 static const int lexer_goto_row154[] = {
-       3,
-       0, 9, 247,
-       11, 12, 247,
-       14, 255, 247
+       1,
+       97, 122, 247
 };
-static const int lexer_goto_row156[] = {
+static const int lexer_goto_row155[] = {
        3,
-       0, 124, -56,
-       125, 125, 248,
-       126, 255, 151
+       0, 9, 248,
+       11, 12, 248,
+       14, 255, 248
 };
 static const int lexer_goto_row157[] = {
-       1,
-       97, 122, 158
+       3,
+       0, 124, -57,
+       125, 125, 249,
+       126, 255, 152
 };
 static const int lexer_goto_row158[] = {
-       11,
-       0, 9, 249,
-       10, 10, 250,
-       11, 12, 249,
-       13, 13, 251,
-       14, 33, 249,
-       34, 34, 252,
-       35, 91, 249,
-       92, 92, 253,
-       93, 122, 249,
-       123, 123, 254,
-       124, 255, 249
+       1,
+       97, 122, 159
 };
 static const int lexer_goto_row159[] = {
-       4,
-       48, 57, 255,
-       65, 90, 256,
-       95, 95, 257,
-       97, 122, 258
+       11,
+       0, 9, 250,
+       10, 10, 251,
+       11, 12, 250,
+       13, 13, 252,
+       14, 33, 250,
+       34, 34, 253,
+       35, 91, 250,
+       92, 92, 254,
+       93, 122, 250,
+       123, 123, 255,
+       124, 255, 250
 };
 static const int lexer_goto_row160[] = {
-       1,
-       0, 255, -60
+       4,
+       48, 57, 256,
+       65, 90, 257,
+       95, 95, 258,
+       97, 122, 259
 };
-static const int lexer_goto_row162[] = {
+static const int lexer_goto_row161[] = {
        1,
-       97, 122, 259
+       0, 255, -61
 };
 static const int lexer_goto_row163[] = {
-       9,
-       0, 9, 260,
-       10, 10, 261,
-       11, 12, 260,
-       13, 13, 262,
-       14, 38, 260,
-       39, 39, 263,
-       40, 91, 260,
-       92, 92, 264,
-       93, 255, 260
+       1,
+       97, 122, 260
 };
 static const int lexer_goto_row164[] = {
+       9,
+       0, 9, 261,
+       10, 10, 262,
+       11, 12, 261,
+       13, 13, 263,
+       14, 38, 261,
+       39, 39, 264,
+       40, 91, 261,
+       92, 92, 265,
+       93, 255, 261
+};
+static const int lexer_goto_row165[] = {
        1,
-       39, 39, 265
+       39, 39, 266
 };
-static const int lexer_goto_row167[] = {
+static const int lexer_goto_row168[] = {
        2,
-       48, 95, -81,
+       48, 95, -82,
        105, 117, -22
 };
-static const int lexer_goto_row168[] = {
-       1,
-       48, 117, -168
-};
 static const int lexer_goto_row169[] = {
        1,
-       48, 117, -168
+       48, 117, -169
 };
 static const int lexer_goto_row170[] = {
        1,
-       48, 57, 171
+       48, 117, -169
 };
 static const int lexer_goto_row171[] = {
        1,
-       48, 57, 171
+       48, 57, 172
 };
 static const int lexer_goto_row172[] = {
        1,
-       48, 57, 171
+       48, 57, 172
 };
 static const int lexer_goto_row173[] = {
+       1,
+       48, 57, 172
+};
+static const int lexer_goto_row174[] = {
        2,
-       48, 95, -83,
+       48, 95, -84,
        105, 117, -22
 };
-static const int lexer_goto_row174[] = {
+static const int lexer_goto_row175[] = {
        1,
-       48, 117, -174
+       48, 117, -175
 };
-static const int lexer_goto_row175[] = {
+static const int lexer_goto_row176[] = {
        2,
-       48, 102, -84,
+       48, 102, -85,
        105, 117, -22
 };
-static const int lexer_goto_row176[] = {
-       1,
-       48, 117, -176
-};
 static const int lexer_goto_row177[] = {
        1,
-       48, 117, -176
+       48, 117, -177
 };
 static const int lexer_goto_row178[] = {
        1,
-       48, 117, -176
+       48, 117, -177
 };
 static const int lexer_goto_row179[] = {
        1,
-       48, 117, -85
+       48, 117, -177
 };
 static const int lexer_goto_row180[] = {
        1,
-       54, 54, 266
+       48, 117, -86
 };
 static const int lexer_goto_row181[] = {
        1,
-       50, 50, 267
+       54, 54, 267
 };
-static const int lexer_goto_row183[] = {
+static const int lexer_goto_row182[] = {
        1,
-       54, 54, 268
+       50, 50, 268
 };
 static const int lexer_goto_row184[] = {
        1,
-       50, 50, 269
+       54, 54, 269
 };
-static const int lexer_goto_row189[] = {
+static const int lexer_goto_row185[] = {
        1,
-       101, 101, 270
+       50, 50, 270
 };
 static const int lexer_goto_row190[] = {
        1,
-       48, 122, -104
+       101, 101, 271
 };
 static const int lexer_goto_row191[] = {
        1,
-       48, 122, -104
+       48, 122, -105
 };
 static const int lexer_goto_row192[] = {
        1,
-       48, 122, -104
+       48, 122, -105
 };
 static const int lexer_goto_row193[] = {
        1,
-       48, 122, -104
+       48, 122, -105
 };
 static const int lexer_goto_row194[] = {
        1,
-       0, 255, -105
+       48, 122, -105
 };
 static const int lexer_goto_row195[] = {
        1,
-       0, 255, 271
+       0, 255, -106
 };
 static const int lexer_goto_row196[] = {
-       3,
-       0, 124, 272,
-       125, 125, 273,
-       126, 255, 272
+       1,
+       0, 255, 272
 };
 static const int lexer_goto_row197[] = {
        3,
-       0, 33, -106,
-       34, 34, 156,
-       35, 255, -106
+       0, 124, 273,
+       125, 125, 274,
+       126, 255, 273
 };
 static const int lexer_goto_row198[] = {
-       2,
-       34, 34, 274,
-       97, 122, 158
+       3,
+       0, 33, -107,
+       34, 34, 157,
+       35, 255, -107
 };
 static const int lexer_goto_row199[] = {
-       3,
-       0, 9, 275,
-       11, 12, 275,
-       14, 255, 275
+       2,
+       34, 34, 275,
+       97, 122, 159
 };
 static const int lexer_goto_row200[] = {
-       1,
-       39, 39, 161
+       3,
+       0, 9, 276,
+       11, 12, 276,
+       14, 255, 276
 };
 static const int lexer_goto_row201[] = {
        1,
-       39, 39, 276
+       39, 39, 162
 };
 static const int lexer_goto_row202[] = {
-       3,
-       0, 9, 277,
-       11, 12, 277,
-       14, 255, 277
+       1,
+       39, 39, 277
 };
 static const int lexer_goto_row203[] = {
        3,
-       34, 113, -36,
-       114, 114, 278,
-       115, 122, 109
+       0, 9, 278,
+       11, 12, 278,
+       14, 255, 278
 };
 static const int lexer_goto_row204[] = {
        3,
-       34, 115, -116,
-       116, 116, 279,
-       117, 122, 109
+       34, 113, -37,
+       114, 114, 279,
+       115, 122, 110
 };
 static const int lexer_goto_row205[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 115, -117,
+       116, 116, 280,
+       117, 122, 110
 };
 static const int lexer_goto_row206[] = {
-       3,
-       34, 100, -45,
-       101, 101, 280,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row207[] = {
        3,
-       34, 95, -35,
-       97, 97, 281,
-       98, 122, 109
+       34, 100, -46,
+       101, 101, 281,
+       102, 122, 110
 };
 static const int lexer_goto_row208[] = {
        3,
-       34, 98, -136,
-       99, 99, 282,
-       100, 122, 109
+       34, 95, -36,
+       97, 97, 282,
+       98, 122, 110
 };
 static const int lexer_goto_row209[] = {
        3,
-       34, 114, -114,
-       115, 115, 283,
-       116, 122, 109
+       34, 98, -137,
+       99, 99, 283,
+       100, 122, 110
 };
 static const int lexer_goto_row210[] = {
        3,
-       34, 115, -116,
-       116, 116, 284,
-       117, 122, 109
+       34, 114, -115,
+       115, 115, 284,
+       116, 122, 110
 };
 static const int lexer_goto_row211[] = {
        3,
-       34, 100, -45,
-       101, 101, 285,
-       102, 122, 109
+       34, 115, -117,
+       116, 116, 285,
+       117, 122, 110
 };
 static const int lexer_goto_row212[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 286,
+       102, 122, 110
 };
 static const int lexer_goto_row213[] = {
-       4,
-       34, 95, -35,
-       97, 108, 109,
-       109, 109, 286,
-       110, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row214[] = {
-       3,
-       34, 100, -45,
-       101, 101, 287,
-       102, 122, 109
+       4,
+       34, 95, -36,
+       97, 108, 110,
+       109, 109, 287,
+       110, 122, 110
 };
 static const int lexer_goto_row215[] = {
        3,
-       34, 114, -114,
-       115, 115, 288,
-       116, 122, 109
+       34, 100, -46,
+       101, 101, 288,
+       102, 122, 110
 };
 static const int lexer_goto_row216[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 114, -115,
+       115, 115, 289,
+       116, 122, 110
 };
 static const int lexer_goto_row217[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row218[] = {
-       5,
-       34, 107, -39,
-       108, 108, 289,
-       109, 110, 109,
-       111, 111, 290,
-       112, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row219[] = {
-       3,
-       34, 115, -116,
-       116, 116, 291,
-       117, 122, 109
+       5,
+       34, 107, -40,
+       108, 108, 290,
+       109, 110, 110,
+       111, 111, 291,
+       112, 122, 110
 };
 static const int lexer_goto_row220[] = {
-       5,
-       34, 100, -45,
-       101, 101, 292,
-       102, 113, 109,
-       114, 114, 293,
-       115, 122, 109
+       3,
+       34, 115, -117,
+       116, 116, 292,
+       117, 122, 110
 };
 static const int lexer_goto_row221[] = {
-       1,
-       34, 122, -41
+       5,
+       34, 100, -46,
+       101, 101, 293,
+       102, 113, 110,
+       114, 114, 294,
+       115, 122, 110
 };
 static const int lexer_goto_row222[] = {
-       3,
-       34, 100, -45,
-       101, 101, 294,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row223[] = {
        3,
-       34, 100, -45,
+       34, 100, -46,
        101, 101, 295,
-       102, 122, 109
+       102, 122, 110
 };
 static const int lexer_goto_row224[] = {
        3,
-       34, 111, -127,
-       112, 112, 296,
-       113, 122, 109
+       34, 100, -46,
+       101, 101, 296,
+       102, 122, 110
 };
 static const int lexer_goto_row225[] = {
        3,
-       34, 116, -145,
-       117, 117, 297,
-       118, 122, 109
+       34, 111, -128,
+       112, 112, 297,
+       113, 122, 110
 };
 static const int lexer_goto_row226[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 116, -146,
+       117, 117, 298,
+       118, 122, 110
 };
 static const int lexer_goto_row227[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row228[] = {
-       3,
-       34, 107, -39,
-       108, 108, 298,
-       109, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row229[] = {
        3,
-       34, 100, -45,
-       101, 101, 299,
-       102, 122, 109
+       34, 107, -40,
+       108, 108, 299,
+       109, 122, 110
 };
 static const int lexer_goto_row230[] = {
-       4,
-       34, 95, -35,
-       97, 106, 109,
-       107, 107, 300,
-       108, 122, 109
+       3,
+       34, 100, -46,
+       101, 101, 300,
+       102, 122, 110
 };
 static const int lexer_goto_row231[] = {
        4,
-       34, 95, -35,
-       97, 117, 109,
-       118, 118, 301,
-       119, 122, 109
+       34, 95, -36,
+       97, 106, 110,
+       107, 107, 301,
+       108, 122, 110
 };
 static const int lexer_goto_row232[] = {
-       3,
-       34, 115, -116,
-       116, 116, 302,
-       117, 122, 109
+       4,
+       34, 95, -36,
+       97, 117, 110,
+       118, 118, 302,
+       119, 122, 110
 };
 static const int lexer_goto_row233[] = {
        3,
-       34, 107, -39,
-       108, 108, 303,
-       109, 122, 109
+       34, 115, -117,
+       116, 116, 303,
+       117, 122, 110
 };
 static const int lexer_goto_row234[] = {
        3,
-       34, 100, -45,
-       101, 101, 304,
-       102, 122, 109
+       34, 107, -40,
+       108, 108, 304,
+       109, 122, 110
 };
 static const int lexer_goto_row235[] = {
        3,
-       34, 116, -145,
-       117, 117, 305,
-       118, 122, 109
+       34, 100, -46,
+       101, 101, 305,
+       102, 122, 110
 };
 static const int lexer_goto_row236[] = {
        3,
-       34, 101, -42,
-       102, 102, 306,
-       103, 122, 109
+       34, 116, -146,
+       117, 117, 306,
+       118, 122, 110
 };
 static const int lexer_goto_row237[] = {
        3,
-       34, 114, -114,
-       115, 115, 307,
-       116, 122, 109
+       34, 101, -43,
+       102, 102, 307,
+       103, 122, 110
 };
 static const int lexer_goto_row238[] = {
        3,
-       34, 100, -45,
-       101, 101, 308,
-       102, 122, 109
+       34, 114, -115,
+       115, 115, 308,
+       116, 122, 110
 };
 static const int lexer_goto_row239[] = {
        3,
-       34, 109, -46,
-       110, 110, 309,
-       111, 122, 109
+       34, 100, -46,
+       101, 101, 309,
+       102, 122, 110
 };
 static const int lexer_goto_row240[] = {
        3,
-       34, 100, -45,
-       101, 101, 310,
-       102, 122, 109
+       34, 109, -47,
+       110, 110, 310,
+       111, 122, 110
 };
 static const int lexer_goto_row241[] = {
        3,
-       34, 100, -45,
+       34, 100, -46,
        101, 101, 311,
-       102, 122, 109
+       102, 122, 110
 };
 static const int lexer_goto_row242[] = {
        3,
-       34, 117, -232,
-       118, 118, 312,
-       119, 122, 109
+       34, 100, -46,
+       101, 101, 312,
+       102, 122, 110
 };
 static const int lexer_goto_row243[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 117, -233,
+       118, 118, 313,
+       119, 122, 110
 };
 static const int lexer_goto_row244[] = {
-       3,
-       34, 107, -39,
-       108, 108, 313,
-       109, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row245[] = {
        3,
-       34, 103, -50,
-       104, 104, 314,
-       105, 122, 109
+       34, 107, -40,
+       108, 108, 314,
+       109, 122, 110
 };
 static const int lexer_goto_row246[] = {
        3,
-       34, 107, -39,
-       108, 108, 315,
-       109, 122, 109
+       34, 103, -51,
+       104, 104, 315,
+       105, 122, 110
 };
 static const int lexer_goto_row247[] = {
-       4,
-       48, 57, 316,
-       65, 90, 317,
-       95, 95, 318,
-       97, 122, 319
+       3,
+       34, 107, -40,
+       108, 108, 316,
+       109, 122, 110
 };
 static const int lexer_goto_row248[] = {
-       1,
-       0, 255, -153
+       4,
+       48, 57, 317,
+       65, 90, 318,
+       95, 95, 319,
+       97, 122, 320
 };
 static const int lexer_goto_row249[] = {
-       11,
-       0, 9, 320,
-       10, 10, 321,
-       11, 12, 320,
-       13, 13, 322,
-       14, 33, 320,
-       34, 34, 323,
-       35, 91, 320,
-       92, 92, 324,
-       93, 122, 320,
-       123, 123, 325,
-       124, 255, 320
+       1,
+       0, 255, -154
 };
 static const int lexer_goto_row250[] = {
-       1,
-       0, 255, -159
+       11,
+       0, 9, 321,
+       10, 10, 322,
+       11, 12, 321,
+       13, 13, 323,
+       14, 33, 321,
+       34, 34, 324,
+       35, 91, 321,
+       92, 92, 325,
+       93, 122, 321,
+       123, 123, 326,
+       124, 255, 321
 };
 static const int lexer_goto_row251[] = {
        1,
-       0, 255, -159
+       0, 255, -160
 };
 static const int lexer_goto_row252[] = {
        1,
-       0, 255, -159
+       0, 255, -160
 };
 static const int lexer_goto_row253[] = {
-       5,
-       0, 33, -159,
-       34, 34, 326,
-       35, 122, -159,
-       123, 123, 327,
-       124, 255, 249
+       1,
+       0, 255, -160
 };
 static const int lexer_goto_row254[] = {
-       3,
-       0, 9, 328,
-       11, 12, 328,
-       14, 255, 328
+       5,
+       0, 33, -160,
+       34, 34, 327,
+       35, 122, -160,
+       123, 123, 328,
+       124, 255, 250
 };
 static const int lexer_goto_row255[] = {
-       5,
-       0, 33, -159,
-       34, 34, 329,
-       35, 122, -159,
-       123, 123, 330,
-       124, 255, 249
+       3,
+       0, 9, 329,
+       11, 12, 329,
+       14, 255, 329
 };
 static const int lexer_goto_row256[] = {
-       1,
-       48, 122, -160
+       5,
+       0, 33, -160,
+       34, 34, 330,
+       35, 122, -160,
+       123, 123, 331,
+       124, 255, 250
 };
 static const int lexer_goto_row257[] = {
        1,
-       48, 122, -160
+       48, 122, -161
 };
 static const int lexer_goto_row258[] = {
        1,
-       48, 122, -160
+       48, 122, -161
 };
 static const int lexer_goto_row259[] = {
        1,
-       48, 122, -160
+       48, 122, -161
 };
 static const int lexer_goto_row260[] = {
-       4,
-       48, 57, 331,
-       65, 90, 332,
-       95, 95, 333,
-       97, 122, 334
-};
-static const int lexer_goto_row261[] = {
        1,
-       0, 255, -164
+       48, 122, -161
+};
+static const int lexer_goto_row261[] = {
+       4,
+       48, 57, 332,
+       65, 90, 333,
+       95, 95, 334,
+       97, 122, 335
 };
 static const int lexer_goto_row262[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row263[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row264[] = {
-       9,
-       0, 9, 335,
-       10, 10, 336,
-       11, 12, 335,
-       13, 13, 337,
-       14, 38, 335,
-       39, 39, 338,
-       40, 91, 335,
-       92, 92, 339,
-       93, 255, 335
+       1,
+       0, 255, -165
 };
 static const int lexer_goto_row265[] = {
-       3,
-       0, 9, 340,
-       11, 12, 340,
-       14, 255, 340
+       9,
+       0, 9, 336,
+       10, 10, 337,
+       11, 12, 336,
+       13, 13, 338,
+       14, 38, 336,
+       39, 39, 339,
+       40, 91, 336,
+       92, 92, 340,
+       93, 255, 336
 };
 static const int lexer_goto_row266[] = {
-       1,
-       97, 122, 259
+       3,
+       0, 9, 341,
+       11, 12, 341,
+       14, 255, 341
 };
-static const int lexer_goto_row271[] = {
+static const int lexer_goto_row267[] = {
        1,
-       98, 98, 341
+       97, 122, 260
 };
 static const int lexer_goto_row272[] = {
        1,
-       0, 255, -105
+       98, 98, 342
 };
 static const int lexer_goto_row273[] = {
        1,
-       0, 255, -105
+       0, 255, -106
 };
-static const int lexer_goto_row275[] = {
-       11,
-       0, 9, 342,
-       10, 10, 343,
-       11, 12, 342,
-       13, 13, 344,
-       14, 33, 342,
-       34, 34, 345,
-       35, 91, 342,
-       92, 92, 346,
-       93, 122, 342,
-       123, 123, 347,
-       124, 255, 342
+static const int lexer_goto_row274[] = {
+       1,
+       0, 255, -106
 };
 static const int lexer_goto_row276[] = {
-       1,
-       0, 255, -198
+       11,
+       0, 9, 343,
+       10, 10, 344,
+       11, 12, 343,
+       13, 13, 345,
+       14, 33, 343,
+       34, 34, 346,
+       35, 91, 343,
+       92, 92, 347,
+       93, 122, 343,
+       123, 123, 348,
+       124, 255, 343
 };
 static const int lexer_goto_row277[] = {
-       9,
-       0, 9, 348,
-       10, 10, 349,
-       11, 12, 348,
-       13, 13, 350,
-       14, 38, 348,
-       39, 39, 351,
-       40, 91, 348,
-       92, 92, 352,
-       93, 255, 348
+       1,
+       0, 255, -199
 };
 static const int lexer_goto_row278[] = {
-       1,
-       39, 39, 265
+       9,
+       0, 9, 349,
+       10, 10, 350,
+       11, 12, 349,
+       13, 13, 351,
+       14, 38, 349,
+       39, 39, 352,
+       40, 91, 349,
+       92, 92, 353,
+       93, 255, 349
 };
 static const int lexer_goto_row279[] = {
-       3,
-       34, 115, -116,
-       116, 116, 353,
-       117, 122, 109
+       1,
+       39, 39, 266
 };
 static const int lexer_goto_row280[] = {
        3,
-       34, 113, -36,
-       114, 114, 354,
-       115, 122, 109
+       34, 115, -117,
+       116, 116, 354,
+       117, 122, 110
 };
 static const int lexer_goto_row281[] = {
        3,
-       34, 113, -36,
+       34, 113, -37,
        114, 114, 355,
-       115, 122, 109
+       115, 122, 110
 };
 static const int lexer_goto_row282[] = {
        3,
-       34, 106, -231,
-       107, 107, 356,
-       108, 122, 109
+       34, 113, -37,
+       114, 114, 356,
+       115, 122, 110
 };
 static const int lexer_goto_row283[] = {
        3,
-       34, 103, -50,
-       104, 104, 357,
-       105, 122, 109
+       34, 106, -232,
+       107, 107, 357,
+       108, 122, 110
 };
 static const int lexer_goto_row284[] = {
        3,
-       34, 114, -114,
-       115, 115, 358,
-       116, 122, 109
+       34, 103, -51,
+       104, 104, 358,
+       105, 122, 110
 };
 static const int lexer_goto_row285[] = {
        3,
-       34, 104, -54,
-       105, 105, 359,
-       106, 122, 109
+       34, 114, -115,
+       115, 115, 359,
+       116, 122, 110
 };
 static const int lexer_goto_row286[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 104, -55,
+       105, 105, 360,
+       106, 122, 110
 };
 static const int lexer_goto_row287[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row288[] = {
-       3,
-       34, 113, -36,
-       114, 114, 360,
-       115, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row289[] = {
        3,
-       34, 100, -45,
-       101, 101, 361,
-       102, 122, 109
+       34, 113, -37,
+       114, 114, 361,
+       115, 122, 110
 };
 static const int lexer_goto_row290[] = {
        3,
-       34, 104, -54,
-       105, 105, 362,
-       106, 122, 109
+       34, 100, -46,
+       101, 101, 362,
+       102, 122, 110
 };
 static const int lexer_goto_row291[] = {
        3,
-       34, 113, -36,
-       114, 114, 363,
-       115, 122, 109
+       34, 104, -55,
+       105, 105, 363,
+       106, 122, 110
 };
 static const int lexer_goto_row292[] = {
-       1,
-       34, 122, -41
-};
-static const int lexer_goto_row293[] = {
        3,
-       34, 113, -36,
+       34, 113, -37,
        114, 114, 364,
-       115, 122, 109
+       115, 122, 110
+};
+static const int lexer_goto_row293[] = {
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row294[] = {
        3,
-       34, 116, -145,
-       117, 117, 365,
-       118, 122, 109
+       34, 113, -37,
+       114, 114, 365,
+       115, 122, 110
 };
 static const int lexer_goto_row295[] = {
        3,
-       34, 115, -116,
-       116, 116, 366,
-       117, 122, 109
+       34, 116, -146,
+       117, 117, 366,
+       118, 122, 110
 };
 static const int lexer_goto_row296[] = {
        3,
-       34, 107, -39,
-       108, 108, 367,
-       109, 122, 109
+       34, 115, -117,
+       116, 116, 367,
+       117, 122, 110
 };
 static const int lexer_goto_row297[] = {
-       1,
-       34, 122, -41
-};
-static const int lexer_goto_row298[] = {
        3,
-       34, 107, -39,
+       34, 107, -40,
        108, 108, 368,
-       109, 122, 109
+       109, 122, 110
+};
+static const int lexer_goto_row298[] = {
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row299[] = {
        3,
-       34, 95, -35,
-       97, 97, 369,
-       98, 122, 109
+       34, 107, -40,
+       108, 108, 369,
+       109, 122, 110
 };
 static const int lexer_goto_row300[] = {
-       1,
-       34, 122, -41
-};
-static const int lexer_goto_row301[] = {
        3,
-       34, 95, -35,
+       34, 95, -36,
        97, 97, 370,
-       98, 122, 109
+       98, 122, 110
+};
+static const int lexer_goto_row301[] = {
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row302[] = {
        3,
-       34, 95, -35,
+       34, 95, -36,
        97, 97, 371,
-       98, 122, 109
+       98, 122, 110
 };
 static const int lexer_goto_row303[] = {
        3,
-       34, 100, -45,
-       101, 101, 372,
-       102, 122, 109
+       34, 95, -36,
+       97, 97, 372,
+       98, 122, 110
 };
 static const int lexer_goto_row304[] = {
        3,
-       34, 104, -54,
-       105, 105, 373,
-       106, 122, 109
+       34, 100, -46,
+       101, 101, 373,
+       102, 122, 110
 };
 static const int lexer_goto_row305[] = {
        3,
-       34, 101, -42,
-       102, 102, 374,
-       103, 122, 109
+       34, 104, -55,
+       105, 105, 374,
+       106, 122, 110
 };
 static const int lexer_goto_row306[] = {
        3,
-       34, 113, -36,
-       114, 114, 375,
-       115, 122, 109
+       34, 101, -43,
+       102, 102, 375,
+       103, 122, 110
 };
 static const int lexer_goto_row307[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 113, -37,
+       114, 114, 376,
+       115, 122, 110
 };
 static const int lexer_goto_row308[] = {
-       3,
-       34, 100, -45,
-       101, 101, 376,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row309[] = {
        3,
-       34, 113, -36,
-       114, 114, 377,
-       115, 122, 109
+       34, 100, -46,
+       101, 101, 377,
+       102, 122, 110
 };
 static const int lexer_goto_row310[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 113, -37,
+       114, 114, 378,
+       115, 122, 110
 };
 static const int lexer_goto_row311[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row312[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row313[] = {
-       3,
-       34, 100, -45,
-       101, 101, 378,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row314[] = {
        3,
-       34, 100, -45,
+       34, 100, -46,
        101, 101, 379,
-       102, 122, 109
+       102, 122, 110
 };
 static const int lexer_goto_row315[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 380,
+       102, 122, 110
 };
 static const int lexer_goto_row316[] = {
-       3,
-       34, 99, -113,
-       100, 100, 380,
-       101, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row317[] = {
-       1,
-       48, 122, -248
+       3,
+       34, 99, -114,
+       100, 100, 381,
+       101, 122, 110
 };
 static const int lexer_goto_row318[] = {
        1,
-       48, 122, -248
+       48, 122, -249
 };
 static const int lexer_goto_row319[] = {
        1,
-       48, 122, -248
+       48, 122, -249
 };
 static const int lexer_goto_row320[] = {
        1,
-       48, 122, -248
+       48, 122, -249
 };
 static const int lexer_goto_row321[] = {
        1,
-       0, 255, -250
+       48, 122, -249
 };
 static const int lexer_goto_row322[] = {
-       11,
-       0, 9, 381,
-       10, 10, 321,
-       11, 12, 381,
-       13, 13, 322,
-       14, 33, 381,
-       34, 34, 382,
-       35, 91, 381,
-       92, 92, 383,
-       93, 122, 381,
-       123, 123, 384,
-       124, 255, 381
+       1,
+       0, 255, -251
 };
 static const int lexer_goto_row323[] = {
-       1,
-       0, 255, -323
+       11,
+       0, 9, 382,
+       10, 10, 322,
+       11, 12, 382,
+       13, 13, 323,
+       14, 33, 382,
+       34, 34, 383,
+       35, 91, 382,
+       92, 92, 384,
+       93, 122, 382,
+       123, 123, 385,
+       124, 255, 382
 };
 static const int lexer_goto_row324[] = {
-       7,
-       0, 33, -323,
-       34, 34, 385,
-       35, 92, -323,
-       93, 96, 381,
-       97, 122, 386,
-       123, 123, 387,
-       124, 255, 381
+       1,
+       0, 255, -324
 };
 static const int lexer_goto_row325[] = {
-       3,
-       0, 9, 388,
-       11, 12, 388,
-       14, 255, 388
+       7,
+       0, 33, -324,
+       34, 34, 386,
+       35, 92, -324,
+       93, 96, 382,
+       97, 122, 387,
+       123, 123, 388,
+       124, 255, 382
 };
 static const int lexer_goto_row326[] = {
-       5,
-       0, 33, -323,
-       34, 34, 389,
-       35, 122, -323,
-       123, 123, 390,
-       124, 255, 381
+       3,
+       0, 9, 389,
+       11, 12, 389,
+       14, 255, 389
 };
 static const int lexer_goto_row327[] = {
-       3,
-       0, 33, -159,
-       34, 34, 391,
-       35, 255, -254
+       5,
+       0, 33, -324,
+       34, 34, 390,
+       35, 122, -324,
+       123, 123, 391,
+       124, 255, 382
 };
 static const int lexer_goto_row328[] = {
        3,
-       0, 122, -256,
-       123, 123, 392,
-       124, 255, 249
+       0, 33, -160,
+       34, 34, 392,
+       35, 255, -255
 };
 static const int lexer_goto_row329[] = {
-       1,
-       0, 255, -159
+       3,
+       0, 122, -257,
+       123, 123, 393,
+       124, 255, 250
 };
 static const int lexer_goto_row330[] = {
-       3,
-       0, 33, -159,
-       34, 34, 393,
-       35, 255, -254
+       1,
+       0, 255, -160
 };
 static const int lexer_goto_row331[] = {
        3,
-       0, 122, -256,
-       123, 123, 394,
-       124, 255, 249
+       0, 33, -160,
+       34, 34, 394,
+       35, 255, -255
 };
 static const int lexer_goto_row332[] = {
-       1,
-       48, 122, -261
+       3,
+       0, 122, -257,
+       123, 123, 395,
+       124, 255, 250
 };
 static const int lexer_goto_row333[] = {
        1,
-       48, 122, -261
+       48, 122, -262
 };
 static const int lexer_goto_row334[] = {
        1,
-       48, 122, -261
+       48, 122, -262
 };
 static const int lexer_goto_row335[] = {
        1,
-       48, 122, -261
+       48, 122, -262
 };
 static const int lexer_goto_row336[] = {
        1,
-       0, 255, -164
+       48, 122, -262
 };
 static const int lexer_goto_row337[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row338[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row339[] = {
-       9,
-       0, 9, 395,
-       10, 10, 396,
-       11, 12, 395,
-       13, 13, 397,
-       14, 38, 395,
-       39, 39, 398,
-       40, 91, 395,
-       92, 92, 399,
-       93, 255, 395
+       1,
+       0, 255, -165
 };
 static const int lexer_goto_row340[] = {
-       3,
-       0, 9, 400,
-       11, 12, 400,
-       14, 255, 400
+       9,
+       0, 9, 396,
+       10, 10, 397,
+       11, 12, 396,
+       13, 13, 398,
+       14, 38, 396,
+       39, 39, 399,
+       40, 91, 396,
+       92, 92, 400,
+       93, 255, 396
 };
 static const int lexer_goto_row341[] = {
-       1,
-       0, 255, -164
+       3,
+       0, 9, 401,
+       11, 12, 401,
+       14, 255, 401
 };
 static const int lexer_goto_row342[] = {
        1,
-       117, 117, 401
+       0, 255, -165
 };
 static const int lexer_goto_row343[] = {
        1,
-       0, 255, -276
+       117, 117, 402
 };
 static const int lexer_goto_row344[] = {
        1,
-       0, 255, -276
+       0, 255, -277
 };
 static const int lexer_goto_row345[] = {
        1,
-       0, 255, -276
+       0, 255, -277
 };
 static const int lexer_goto_row346[] = {
-       5,
-       0, 33, -276,
-       34, 34, 402,
-       35, 122, -276,
-       123, 123, 403,
-       124, 255, 342
+       1,
+       0, 255, -277
 };
 static const int lexer_goto_row347[] = {
-       3,
-       0, 9, 404,
-       11, 12, 404,
-       14, 255, 404
+       5,
+       0, 33, -277,
+       34, 34, 403,
+       35, 122, -277,
+       123, 123, 404,
+       124, 255, 343
 };
 static const int lexer_goto_row348[] = {
-       5,
-       0, 33, -276,
-       34, 34, 405,
-       35, 122, -276,
-       123, 123, 406,
-       124, 255, 342
+       3,
+       0, 9, 405,
+       11, 12, 405,
+       14, 255, 405
 };
 static const int lexer_goto_row349[] = {
-       1,
-       0, 255, -278
+       5,
+       0, 33, -277,
+       34, 34, 406,
+       35, 122, -277,
+       123, 123, 407,
+       124, 255, 343
 };
 static const int lexer_goto_row350[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row351[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row352[] = {
-       9,
-       0, 9, 407,
-       10, 10, 408,
-       11, 12, 407,
-       13, 13, 409,
-       14, 38, 407,
-       39, 39, 410,
-       40, 91, 407,
-       92, 92, 411,
-       93, 255, 407
+       1,
+       0, 255, -279
 };
 static const int lexer_goto_row353[] = {
-       3,
-       0, 9, 412,
-       11, 12, 412,
-       14, 255, 412
+       9,
+       0, 9, 408,
+       10, 10, 409,
+       11, 12, 408,
+       13, 13, 410,
+       14, 38, 408,
+       39, 39, 411,
+       40, 91, 408,
+       92, 92, 412,
+       93, 255, 408
 };
 static const int lexer_goto_row354[] = {
-       1,
-       34, 122, -41
+       3,
+       0, 9, 413,
+       11, 12, 413,
+       14, 255, 413
 };
 static const int lexer_goto_row355[] = {
-       3,
-       34, 95, -35,
-       97, 97, 413,
-       98, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row356[] = {
        3,
-       34, 115, -116,
-       116, 116, 414,
-       117, 122, 109
+       34, 95, -36,
+       97, 97, 414,
+       98, 122, 110
 };
 static const int lexer_goto_row357[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 115, -117,
+       116, 116, 415,
+       117, 122, 110
 };
 static const int lexer_goto_row358[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row359[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row360[] = {
-       3,
-       34, 109, -46,
-       110, 110, 415,
-       111, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row361[] = {
        3,
-       34, 109, -46,
+       34, 109, -47,
        110, 110, 416,
-       111, 122, 109
+       111, 122, 110
 };
 static const int lexer_goto_row362[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 109, -47,
+       110, 110, 417,
+       111, 122, 110
 };
 static const int lexer_goto_row363[] = {
-       3,
-       34, 100, -45,
-       101, 101, 417,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row364[] = {
        3,
-       34, 115, -116,
-       116, 116, 418,
-       117, 122, 109
+       34, 100, -46,
+       101, 101, 418,
+       102, 122, 110
 };
 static const int lexer_goto_row365[] = {
        3,
-       34, 101, -42,
-       102, 102, 419,
-       103, 122, 109
+       34, 115, -117,
+       116, 116, 419,
+       117, 122, 110
 };
 static const int lexer_goto_row366[] = {
        3,
-       34, 99, -113,
-       100, 100, 420,
-       101, 122, 109
+       34, 101, -43,
+       102, 102, 420,
+       103, 122, 110
 };
 static const int lexer_goto_row367[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 99, -114,
+       100, 100, 421,
+       101, 122, 110
 };
 static const int lexer_goto_row368[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row369[] = {
-       3,
-       34, 100, -45,
-       101, 101, 421,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row370[] = {
        3,
-       34, 97, -35,
-       98, 98, 422,
-       99, 122, 109
+       34, 100, -46,
+       101, 101, 422,
+       102, 122, 110
 };
 static const int lexer_goto_row371[] = {
-       4,
-       34, 95, -35,
-       97, 102, 109,
-       103, 103, 423,
-       104, 122, 109
+       3,
+       34, 97, -36,
+       98, 98, 423,
+       99, 122, 110
 };
 static const int lexer_goto_row372[] = {
-       3,
-       34, 115, -116,
-       116, 116, 424,
-       117, 122, 109
+       4,
+       34, 95, -36,
+       97, 102, 110,
+       103, 103, 424,
+       104, 122, 110
 };
 static const int lexer_goto_row373[] = {
        3,
-       34, 98, -136,
-       99, 99, 425,
-       100, 122, 109
+       34, 115, -117,
+       116, 116, 425,
+       117, 122, 110
 };
 static const int lexer_goto_row374[] = {
        3,
-       34, 98, -136,
+       34, 98, -137,
        99, 99, 426,
-       100, 122, 109
+       100, 122, 110
 };
 static const int lexer_goto_row375[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 98, -137,
+       99, 99, 427,
+       100, 122, 110
 };
 static const int lexer_goto_row376[] = {
-       3,
-       34, 109, -46,
-       110, 110, 427,
-       111, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row377[] = {
        3,
-       34, 115, -116,
-       116, 116, 428,
-       117, 122, 109
+       34, 109, -47,
+       110, 110, 428,
+       111, 122, 110
 };
 static const int lexer_goto_row378[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 115, -117,
+       116, 116, 429,
+       117, 122, 110
 };
 static const int lexer_goto_row379[] = {
-       3,
-       34, 113, -36,
-       114, 114, 429,
-       115, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row380[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 113, -37,
+       114, 114, 430,
+       115, 122, 110
 };
 static const int lexer_goto_row381[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row382[] = {
        1,
-       0, 255, -323
+       34, 122, -42
 };
 static const int lexer_goto_row383[] = {
-       3,
-       0, 92, -325,
-       93, 122, 381,
-       123, 255, -325
+       1,
+       0, 255, -324
 };
 static const int lexer_goto_row384[] = {
        3,
-       0, 9, 430,
-       11, 12, 430,
-       14, 255, 430
+       0, 92, -326,
+       93, 122, 382,
+       123, 255, -326
 };
 static const int lexer_goto_row385[] = {
-       1,
-       0, 255, -327
+       3,
+       0, 9, 431,
+       11, 12, 431,
+       14, 255, 431
 };
 static const int lexer_goto_row386[] = {
-       3,
-       0, 33, -323,
-       34, 34, 431,
-       35, 255, -384
+       1,
+       0, 255, -328
 };
 static const int lexer_goto_row387[] = {
-       12,
-       0, 34, -323,
-       35, 47, 381,
-       48, 57, 432,
-       58, 64, 381,
-       65, 90, 433,
-       91, 91, 381,
-       92, 92, 383,
-       93, 94, 381,
-       95, 95, 434,
-       96, 96, 381,
-       97, 122, 435,
-       123, 255, -323
+       3,
+       0, 33, -324,
+       34, 34, 432,
+       35, 255, -385
 };
 static const int lexer_goto_row388[] = {
-       3,
-       0, 122, -327,
-       123, 123, 436,
-       124, 255, 381
+       12,
+       0, 34, -324,
+       35, 47, 382,
+       48, 57, 433,
+       58, 64, 382,
+       65, 90, 434,
+       91, 91, 382,
+       92, 92, 384,
+       93, 94, 382,
+       95, 95, 435,
+       96, 96, 382,
+       97, 122, 436,
+       123, 255, -324
 };
 static const int lexer_goto_row389[] = {
-       1,
-       0, 255, -250
+       3,
+       0, 122, -328,
+       123, 123, 437,
+       124, 255, 382
 };
 static const int lexer_goto_row390[] = {
-       3,
-       0, 33, -323,
-       34, 34, 437,
-       35, 255, -384
+       1,
+       0, 255, -251
 };
 static const int lexer_goto_row391[] = {
        3,
-       0, 122, -327,
-       123, 123, 438,
-       124, 255, 381
+       0, 33, -324,
+       34, 34, 438,
+       35, 255, -385
 };
 static const int lexer_goto_row392[] = {
-       1,
-       34, 34, 439
+       3,
+       0, 122, -328,
+       123, 123, 439,
+       124, 255, 382
 };
 static const int lexer_goto_row393[] = {
        1,
-       0, 255, -332
+       34, 34, 440
 };
 static const int lexer_goto_row394[] = {
        1,
-       0, 255, -328
+       0, 255, -333
 };
 static const int lexer_goto_row395[] = {
        1,
-       123, 123, 440
+       0, 255, -329
 };
 static const int lexer_goto_row396[] = {
        1,
-       0, 255, -164
+       123, 123, 441
 };
 static const int lexer_goto_row397[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row398[] = {
        1,
-       0, 255, -164
+       0, 255, -165
 };
 static const int lexer_goto_row399[] = {
        1,
-       97, 122, 441
+       0, 255, -165
 };
 static const int lexer_goto_row400[] = {
-       3,
-       0, 9, 442,
-       11, 12, 442,
-       14, 255, 442
+       1,
+       97, 122, 442
 };
 static const int lexer_goto_row401[] = {
-       1,
-       0, 255, -164
+       3,
+       0, 9, 443,
+       11, 12, 443,
+       14, 255, 443
 };
 static const int lexer_goto_row402[] = {
        1,
-       103, 103, 443
+       0, 255, -165
 };
 static const int lexer_goto_row403[] = {
-       3,
-       0, 33, -276,
-       34, 34, 391,
-       35, 255, -347
+       1,
+       103, 103, 444
 };
 static const int lexer_goto_row404[] = {
        3,
-       0, 122, -349,
-       123, 123, 444,
-       124, 255, 342
+       0, 33, -277,
+       34, 34, 392,
+       35, 255, -348
 };
 static const int lexer_goto_row405[] = {
-       1,
-       0, 255, -276
+       3,
+       0, 122, -350,
+       123, 123, 445,
+       124, 255, 343
 };
 static const int lexer_goto_row406[] = {
-       3,
-       0, 33, -276,
-       34, 34, 445,
-       35, 255, -347
+       1,
+       0, 255, -277
 };
 static const int lexer_goto_row407[] = {
        3,
-       0, 122, -349,
-       123, 123, 394,
-       124, 255, 342
+       0, 33, -277,
+       34, 34, 446,
+       35, 255, -348
 };
 static const int lexer_goto_row408[] = {
-       1,
-       0, 255, -278
+       3,
+       0, 122, -350,
+       123, 123, 395,
+       124, 255, 343
 };
 static const int lexer_goto_row409[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row410[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row411[] = {
-       9,
-       0, 9, 446,
-       10, 10, 447,
-       11, 12, 446,
-       13, 13, 448,
-       14, 38, 446,
-       39, 39, 398,
-       40, 91, 446,
-       92, 92, 449,
-       93, 255, 446
+       1,
+       0, 255, -279
 };
 static const int lexer_goto_row412[] = {
-       3,
-       0, 9, 450,
-       11, 12, 450,
-       14, 255, 450
+       9,
+       0, 9, 447,
+       10, 10, 448,
+       11, 12, 447,
+       13, 13, 449,
+       14, 38, 447,
+       39, 39, 399,
+       40, 91, 447,
+       92, 92, 450,
+       93, 255, 447
 };
 static const int lexer_goto_row413[] = {
-       1,
-       0, 255, -278
+       3,
+       0, 9, 451,
+       11, 12, 451,
+       14, 255, 451
 };
 static const int lexer_goto_row414[] = {
-       3,
-       34, 98, -136,
-       99, 99, 451,
-       100, 122, 109
+       1,
+       0, 255, -279
 };
 static const int lexer_goto_row415[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 98, -137,
+       99, 99, 452,
+       100, 122, 110
 };
 static const int lexer_goto_row416[] = {
-       3,
-       34, 116, -145,
-       117, 117, 452,
-       118, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row417[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 116, -146,
+       117, 117, 453,
+       118, 122, 110
 };
 static const int lexer_goto_row418[] = {
-       3,
-       34, 114, -114,
-       115, 115, 453,
-       116, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row419[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 114, -115,
+       115, 115, 454,
+       116, 122, 110
 };
 static const int lexer_goto_row420[] = {
-       3,
-       34, 95, -35,
-       97, 97, 454,
-       98, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row421[] = {
        3,
-       34, 100, -45,
-       101, 101, 455,
-       102, 122, 109
+       34, 95, -36,
+       97, 97, 455,
+       98, 122, 110
 };
 static const int lexer_goto_row422[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 456,
+       102, 122, 110
 };
 static const int lexer_goto_row423[] = {
-       3,
-       34, 107, -39,
-       108, 108, 456,
-       109, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row424[] = {
        3,
-       34, 100, -45,
-       101, 101, 457,
-       102, 122, 109
+       34, 107, -40,
+       108, 108, 457,
+       109, 122, 110
 };
 static const int lexer_goto_row425[] = {
        3,
-       34, 100, -45,
+       34, 100, -46,
        101, 101, 458,
-       102, 122, 109
+       102, 122, 110
 };
 static const int lexer_goto_row426[] = {
        3,
-       34, 115, -116,
-       116, 116, 459,
-       117, 122, 109
+       34, 100, -46,
+       101, 101, 459,
+       102, 122, 110
 };
 static const int lexer_goto_row427[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 115, -117,
+       116, 116, 460,
+       117, 122, 110
 };
 static const int lexer_goto_row428[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row429[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row430[] = {
-       3,
-       34, 114, -114,
-       115, 115, 460,
-       116, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row431[] = {
-       1,
-       0, 255, -323
+       3,
+       34, 114, -115,
+       115, 115, 461,
+       116, 122, 110
 };
 static const int lexer_goto_row432[] = {
-       2,
-       34, 34, 461,
-       97, 122, 462
+       1,
+       0, 255, -324
 };
 static const int lexer_goto_row433[] = {
-       1,
-       0, 255, -388
+       2,
+       34, 34, 462,
+       97, 122, 463
 };
 static const int lexer_goto_row434[] = {
        1,
-       0, 255, -388
+       0, 255, -389
 };
 static const int lexer_goto_row435[] = {
        1,
-       0, 255, -388
+       0, 255, -389
 };
 static const int lexer_goto_row436[] = {
        1,
-       0, 255, -388
+       0, 255, -389
 };
 static const int lexer_goto_row437[] = {
        1,
-       0, 255, -392
+       0, 255, -389
 };
 static const int lexer_goto_row438[] = {
        1,
-       0, 255, -387
+       0, 255, -393
 };
 static const int lexer_goto_row439[] = {
        1,
-       123, 123, 463
+       0, 255, -388
 };
 static const int lexer_goto_row440[] = {
        1,
-       34, 34, 439
+       123, 123, 464
 };
 static const int lexer_goto_row441[] = {
        1,
-       123, 123, 440
+       34, 34, 440
 };
 static const int lexer_goto_row442[] = {
-       4,
-       48, 57, 464,
-       65, 90, 465,
-       95, 95, 466,
-       97, 122, 467
+       1,
+       123, 123, 441
 };
 static const int lexer_goto_row443[] = {
-       1,
-       0, 255, -164
+       4,
+       48, 57, 465,
+       65, 90, 466,
+       95, 95, 467,
+       97, 122, 468
 };
 static const int lexer_goto_row444[] = {
        1,
-       95, 95, 468
+       0, 255, -165
 };
 static const int lexer_goto_row445[] = {
        1,
-       0, 255, -408
+       95, 95, 469
 };
 static const int lexer_goto_row446[] = {
        1,
-       0, 255, -404
+       0, 255, -409
 };
 static const int lexer_goto_row447[] = {
        1,
-       0, 255, -278
+       0, 255, -405
 };
 static const int lexer_goto_row448[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row449[] = {
        1,
-       0, 255, -278
+       0, 255, -279
 };
 static const int lexer_goto_row450[] = {
-       3,
-       0, 9, 469,
-       11, 12, 469,
-       14, 255, 469
+       1,
+       0, 255, -279
 };
 static const int lexer_goto_row451[] = {
-       1,
-       0, 255, -278
+       3,
+       0, 9, 470,
+       11, 12, 470,
+       14, 255, 470
 };
 static const int lexer_goto_row452[] = {
-       3,
-       34, 115, -116,
-       116, 116, 470,
-       117, 122, 109
+       1,
+       0, 255, -279
 };
 static const int lexer_goto_row453[] = {
        3,
-       34, 100, -45,
-       101, 101, 471,
-       102, 122, 109
+       34, 115, -117,
+       116, 116, 471,
+       117, 122, 110
 };
 static const int lexer_goto_row454[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 472,
+       102, 122, 110
 };
 static const int lexer_goto_row455[] = {
-       3,
-       34, 98, -136,
-       99, 99, 472,
-       100, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row456[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 98, -137,
+       99, 99, 473,
+       100, 122, 110
 };
 static const int lexer_goto_row457[] = {
-       3,
-       34, 100, -45,
-       101, 101, 473,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row458[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 474,
+       102, 122, 110
 };
 static const int lexer_goto_row459[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row460[] = {
-       3,
-       34, 100, -45,
-       101, 101, 474,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row461[] = {
        3,
-       34, 95, -35,
-       97, 97, 475,
-       98, 122, 109
+       34, 100, -46,
+       101, 101, 475,
+       102, 122, 110
 };
 static const int lexer_goto_row462[] = {
-       1,
-       34, 122, -433
+       3,
+       34, 95, -36,
+       97, 97, 476,
+       98, 122, 110
 };
 static const int lexer_goto_row463[] = {
-       4,
-       48, 57, 476,
-       65, 90, 477,
-       95, 95, 478,
-       97, 122, 479
+       1,
+       34, 122, -434
 };
 static const int lexer_goto_row464[] = {
-       1,
-       123, 123, 463
+       4,
+       48, 57, 477,
+       65, 90, 478,
+       95, 95, 479,
+       97, 122, 480
 };
 static const int lexer_goto_row465[] = {
        1,
-       48, 122, -443
+       123, 123, 464
 };
 static const int lexer_goto_row466[] = {
        1,
-       48, 122, -443
+       48, 122, -444
 };
 static const int lexer_goto_row467[] = {
        1,
-       48, 122, -443
+       48, 122, -444
 };
 static const int lexer_goto_row468[] = {
        1,
-       48, 122, -443
+       48, 122, -444
 };
 static const int lexer_goto_row469[] = {
        1,
-       95, 95, 480
+       48, 122, -444
 };
 static const int lexer_goto_row470[] = {
        1,
-       0, 255, -278
+       95, 95, 481
 };
 static const int lexer_goto_row471[] = {
        1,
-       34, 122, -41
+       0, 255, -279
 };
 static const int lexer_goto_row472[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row473[] = {
-       3,
-       34, 100, -45,
-       101, 101, 481,
-       102, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row474[] = {
-       1,
-       34, 122, -41
+       3,
+       34, 100, -46,
+       101, 101, 482,
+       102, 122, 110
 };
 static const int lexer_goto_row475[] = {
-       3,
-       34, 99, -113,
-       100, 100, 482,
-       101, 122, 109
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row476[] = {
        3,
-       34, 107, -39,
-       108, 108, 483,
-       109, 122, 109
+       34, 99, -114,
+       100, 100, 483,
+       101, 122, 110
 };
 static const int lexer_goto_row477[] = {
-       1,
-       48, 122, -464
+       3,
+       34, 107, -40,
+       108, 108, 484,
+       109, 122, 110
 };
 static const int lexer_goto_row478[] = {
        1,
-       48, 122, -464
+       48, 122, -465
 };
 static const int lexer_goto_row479[] = {
        1,
-       48, 122, -464
+       48, 122, -465
 };
 static const int lexer_goto_row480[] = {
        1,
-       48, 122, -464
+       48, 122, -465
 };
-static const int lexer_goto_row482[] = {
+static const int lexer_goto_row481[] = {
        1,
-       34, 122, -41
+       48, 122, -465
 };
 static const int lexer_goto_row483[] = {
        1,
-       34, 122, -41
+       34, 122, -42
 };
 static const int lexer_goto_row484[] = {
        1,
-       34, 122, -41
+       34, 122, -42
+};
+static const int lexer_goto_row485[] = {
+       1,
+       34, 122, -42
 };
 static const int lexer_goto_row_null[] = {0};
 const int* const lexer_goto_table[] = {
@@ -2565,10 +2566,10 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row25,
        lexer_goto_row26,
        lexer_goto_row_null,
-       lexer_goto_row28,
+       lexer_goto_row_null,
+       lexer_goto_row29,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row31,
        lexer_goto_row32,
        lexer_goto_row33,
        lexer_goto_row34,
@@ -2593,29 +2594,29 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row53,
        lexer_goto_row54,
        lexer_goto_row55,
+       lexer_goto_row56,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row59,
        lexer_goto_row60,
        lexer_goto_row61,
+       lexer_goto_row62,
        lexer_goto_row_null,
-       lexer_goto_row63,
+       lexer_goto_row64,
        lexer_goto_row_null,
-       lexer_goto_row65,
+       lexer_goto_row66,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row68,
        lexer_goto_row69,
        lexer_goto_row70,
        lexer_goto_row71,
+       lexer_goto_row72,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row75,
        lexer_goto_row76,
+       lexer_goto_row77,
        lexer_goto_row_null,
-       lexer_goto_row78,
        lexer_goto_row79,
        lexer_goto_row80,
        lexer_goto_row81,
@@ -2628,18 +2629,18 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row88,
        lexer_goto_row89,
        lexer_goto_row90,
+       lexer_goto_row91,
        lexer_goto_row_null,
-       lexer_goto_row92,
        lexer_goto_row93,
+       lexer_goto_row94,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row96,
        lexer_goto_row97,
        lexer_goto_row98,
        lexer_goto_row99,
        lexer_goto_row100,
+       lexer_goto_row101,
        lexer_goto_row_null,
-       lexer_goto_row102,
        lexer_goto_row103,
        lexer_goto_row104,
        lexer_goto_row105,
@@ -2688,23 +2689,23 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row148,
        lexer_goto_row149,
        lexer_goto_row150,
+       lexer_goto_row151,
        lexer_goto_row_null,
-       lexer_goto_row152,
        lexer_goto_row153,
        lexer_goto_row154,
+       lexer_goto_row155,
        lexer_goto_row_null,
-       lexer_goto_row156,
        lexer_goto_row157,
        lexer_goto_row158,
        lexer_goto_row159,
        lexer_goto_row160,
+       lexer_goto_row161,
        lexer_goto_row_null,
-       lexer_goto_row162,
        lexer_goto_row163,
        lexer_goto_row164,
+       lexer_goto_row165,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row167,
        lexer_goto_row168,
        lexer_goto_row169,
        lexer_goto_row170,
@@ -2719,14 +2720,14 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row179,
        lexer_goto_row180,
        lexer_goto_row181,
+       lexer_goto_row182,
        lexer_goto_row_null,
-       lexer_goto_row183,
        lexer_goto_row184,
+       lexer_goto_row185,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row189,
        lexer_goto_row190,
        lexer_goto_row191,
        lexer_goto_row192,
@@ -2804,15 +2805,15 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row264,
        lexer_goto_row265,
        lexer_goto_row266,
+       lexer_goto_row267,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row271,
        lexer_goto_row272,
        lexer_goto_row273,
+       lexer_goto_row274,
        lexer_goto_row_null,
-       lexer_goto_row275,
        lexer_goto_row276,
        lexer_goto_row277,
        lexer_goto_row278,
@@ -3018,63 +3019,64 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row478,
        lexer_goto_row479,
        lexer_goto_row480,
+       lexer_goto_row481,
        lexer_goto_row_null,
-       lexer_goto_row482,
        lexer_goto_row483,
-       lexer_goto_row484
+       lexer_goto_row484,
+       lexer_goto_row485
 };
 
 const int lexer_accept_table[] = {
-       -1,0,1,1,0,97,110,2,83,86,-1,56,57,80,78,60,79,77,82,103,103,61,99,90,63,93,98,100,58,59,85,-1,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,110,87,1,89,110,105,-1,106,2,2,2,68,72,112,112,112,81,66,64,65,76,104,67,-1,103,-1,-1,-1,-1,103,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,100,100,100,100,71,-1,102,114,-1,-1,101,101,101,101,101,101,48,101,101,101,101,17,101,101,101,101,101,101,24,101,30,16,101,101,101,101,101,101,101,32,101,101,101,101,101,101,101,101,101,101,101,101,101,101,70,110,108,-1,107,110,105,111,105,110,2,109,111,112,69,75,103,103,103,-1,-1,104,103,103,103,103,103,103,103,-1,-1,103,-1,-1,103,73,96,74,-1,102,102,102,102,114,-1,-1,-1,105,-1,-1,-1,-1,101,101,31,101,101,101,101,101,101,11,101,101,101,29,12,101,101,101,41,101,101,101,101,40,33,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,18,101,101,101,108,110,110,111,111,111,-1,-1,-1,105,105,105,105,109,111,111,111,-1,-1,109,103,103,103,103,-1,114,114,113,-1,-1,-1,-1,101,101,101,101,101,101,101,26,9,101,101,101,101,14,101,101,101,101,28,101,47,42,101,101,101,101,101,101,44,101,101,25,45,13,101,101,52,101,108,108,108,108,110,-1,-1,108,-1,107,-1,-1,111,-1,-1,109,109,109,109,111,111,111,-1,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,101,101,37,55,6,101,101,46,101,101,101,101,50,51,101,101,101,101,101,101,15,101,101,43,101,27,54,-1,-1,-1,-1,-1,108,-1,110,-1,-1,105,-1,-1,106,111,111,111,105,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,39,101,19,101,5,101,101,4,101,101,101,101,20,35,10,101,-1,108,108,108,108,108,-1,-1,107,105,106,105,111,-1,-1,-1,-1,-1,-1,-1,-1,101,101,34,101,23,101,3,22,101,101,108,108,107,105,105,105,105,-1,-1,7,36,101,49,101,101,108,108,108,108,53,8,21,9
+       -1,0,1,1,0,97,111,2,83,86,-1,56,57,80,78,60,79,77,82,104,104,61,100,90,63,93,98,99,101,58,59,85,-1,-1,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,84,111,87,1,89,111,106,-1,107,2,2,2,68,72,113,113,113,81,66,64,65,76,105,67,-1,104,-1,-1,-1,-1,104,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,101,101,101,101,71,-1,103,115,-1,-1,102,102,102,102,102,102,48,102,102,102,102,17,102,102,102,102,102,102,24,102,30,16,102,102,102,102,102,102,102,32,102,102,102,102,102,102,102,102,102,102,102,102,102,102,70,111,109,-1,108,111,106,112,106,111,2,110,112,113,69,75,104,104,104,-1,-1,105,104,104,104,104,104,104,104,-1,-1,104,-1,-1,104,73,96,74,-1,103,103,103,103,115,-1,-1,-1,106,-1,-1,-1,-1,102,102,31,102,102,102,102,102,102,11,102,102,102,29,12,102,102,102,41,102,102,102,102,40,33,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,18,102,102,102,109,111,111,112,112,112,-1,-1,-1,106,106,106,106,110,112,112,112,-1,-1,110,104,104,104,104,-1,115,115,114,-1,-1,-1,-1,102,102,102,102,102,102,102,26,9,102,102,102,102,14,102,102,102,102,28,102,47,42,102,102,102,102,102,102,44,102,102,25,45,13,102,102,52,102,109,109,109,109,111,-1,-1,109,-1,108,-1,-1,112,-1,-1,110,110,110,110,112,112,112,-1,-1,112,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,102,102,37,55,6,102,102,46,102,102,102,102,50,51,102,102,102,102,102,102,15,102,102,43,102,27,54,-1,-1,-1,-1,-1,109,-1,111,-1,-1,106,-1,-1,107,112,112,112,106,-1,112,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,102,39,102,19,102,5,102,102,4,102,102,102,102,20,35,10,102,-1,109,109,109,109,109,-1,-1,108,106,107,106,112,-1,-1,-1,-1,-1,-1,-1,-1,102,102,34,102,23,102,3,22,102,102,109,109,108,106,106,106,106,-1,-1,7,36,102,49,102,102,109,109,109,109,53,8,21,9
 };
 
 static int parser_action_row1[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row2[] = {
        1,
-       -1, 1, 499
+       -1, 1, 975
 };
 static int parser_action_row3[] = {
        1,
-       -1, 1, 1112
+       -1, 1, 1784
 };
 static int parser_action_row4[] = {
        4,
-       -1, 1, 487,
+       -1, 1, 963,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 3
+       99, 0, 3
 };
 static int parser_action_row5[] = {
        2,
        -1, 3, 4,
-       114, 2, -1
+       115, 2, -1
 };
 static int parser_action_row6[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row7[] = {
        1,
-       -1, 1, 1078
+       -1, 1, 1750
 };
 static int parser_action_row8[] = {
        1,
-       -1, 1, 1082
+       -1, 1, 1754
 };
 static int parser_action_row9[] = {
        1,
@@ -3082,18488 +3084,39961 @@ static int parser_action_row9[] = {
 };
 static int parser_action_row10[] = {
        1,
-       -1, 1, 21
+       -1, 1, 48
 };
 static int parser_action_row11[] = {
        1,
-       -1, 1, 19
+       -1, 1, 46
 };
 static int parser_action_row12[] = {
        1,
-       -1, 1, 1080
+       -1, 1, 1752
 };
 static int parser_action_row13[] = {
        2,
-       -1, 1, 496,
-       114, 1, 23
+       -1, 1, 972,
+       115, 1, 50
 };
 static int parser_action_row14[] = {
-       33,
-       -1, 1, 30,
-       13, 0, 31,
-       14, 0, 32,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       44,
+       -1, 1, 944,
+       3, 0, 31,
+       4, 0, 32,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 38,
+       13, 0, 39,
+       14, 0, 40,
+       16, 0, 41,
+       17, 0, 42,
+       18, 0, 43,
+       19, 0, 44,
+       20, 0, 45,
+       21, 0, 46,
+       22, 0, 47,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row15[] = {
        3,
        -1, 3, 14,
-       29, 0, 84,
-       112, 0, 85
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row16[] = {
        1,
-       -1, 1, 1114
+       -1, 1, 1786
 };
 static int parser_action_row17[] = {
        4,
        -1, 3, 16,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row18[] = {
        1,
-       -1, 1, 498
+       -1, 1, 974
 };
 static int parser_action_row19[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row20[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row21[] = {
        5,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row22[] = {
        7,
-       -1, 1, 484,
-       0, 0, 102,
-       1, 0, 103,
-       10, 1, 1075,
-       29, 1, 1075,
-       98, 0, 104,
-       112, 1, 1075
+       -1, 1, 960,
+       0, 0, 114,
+       1, 0, 115,
+       10, 1, 1747,
+       29, 1, 1747,
+       99, 0, 116,
+       113, 1, 1747
 };
 static int parser_action_row23[] = {
        7,
-       -1, 1, 486,
+       -1, 1, 962,
        0, 0, 1,
        1, 0, 2,
-       10, 1, 1077,
-       29, 1, 1077,
-       98, 0, 105,
-       112, 1, 1077
+       10, 1, 1749,
+       29, 1, 1749,
+       99, 0, 117,
+       113, 1, 1749
 };
 static int parser_action_row24[] = {
        1,
-       -1, 1, 491
+       -1, 1, 967
 };
 static int parser_action_row25[] = {
        4,
-       -1, 1, 484,
-       0, 0, 102,
-       1, 0, 103,
-       98, 0, 104
+       -1, 1, 960,
+       0, 0, 114,
+       1, 0, 115,
+       99, 0, 116
 };
 static int parser_action_row26[] = {
        4,
-       -1, 1, 486,
+       -1, 1, 962,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 105
+       99, 0, 117
 };
 static int parser_action_row27[] = {
        1,
        -1, 1, 1
 };
 static int parser_action_row28[] = {
-       33,
-       -1, 1, 30,
-       13, 0, 31,
-       14, 0, 32,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       43,
+       -1, 1, 944,
+       4, 0, 32,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 38,
+       13, 0, 39,
+       14, 0, 121,
+       16, 0, 41,
+       17, 0, 42,
+       18, 0, 43,
+       19, 0, 122,
+       20, 0, 123,
+       21, 0, 124,
+       22, 0, 125,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row29[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row30[] = {
        7,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row31[] = {
        5,
-       -1, 1, 495,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row32[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 364,
-       76, 1, 364,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row33[] = {
-       1,
-       -1, 1, 31
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row34[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 156,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 94
 };
 static int parser_action_row35[] = {
        2,
        -1, 3, 34,
-       100, 0, 161
+       5, 0, 136
 };
 static int parser_action_row36[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 96
 };
 static int parser_action_row37[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 97
 };
 static int parser_action_row38[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 156,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 99
 };
 static int parser_action_row39[] = {
-       3,
-       -1, 1, 497,
+       27,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row40[] = {
-       25,
-       -1, 1, 175,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 746,
+       76, 1, 746,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 746,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row41[] = {
-       2,
-       -1, 1, 181,
-       50, 0, 197
+       14,
+       -1, 3, 40,
+       3, 0, 209,
+       4, 0, 210,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 211,
+       18, 0, 43,
+       19, 0, 212,
+       20, 0, 213,
+       21, 0, 214,
+       22, 0, 215
 };
 static int parser_action_row42[] = {
-       2,
-       -1, 1, 178,
-       50, 0, 197
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 217,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row43[] = {
-       1,
-       -1, 1, 180
+       2,
+       -1, 3, 42,
+       101, 0, 223
 };
 static int parser_action_row44[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 200,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 43,
+       5, 0, 224
 };
 static int parser_action_row45[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row46[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row47[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row48[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row49[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row50[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row51[] = {
-       2,
-       -1, 3, 50,
-       12, 0, 211
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 217,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row52[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
-};
-static int parser_action_row53[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row53[] = {
+       27,
+       -1, 1, 495,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
 static int parser_action_row54[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 501,
+       50, 0, 263
 };
 static int parser_action_row55[] = {
        2,
-       -1, 3, 54,
-       61, 0, 215
+       -1, 1, 498,
+       50, 0, 263
 };
 static int parser_action_row56[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 352,
-       61, 0, 216,
-       62, 0, 217,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 352,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 500
 };
 static int parser_action_row57[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 266,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row58[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row59[] = {
        2,
-       -1, 1, 415,
-       97, 0, 204
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row60[] = {
-       1,
-       -1, 1, 407
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row61[] = {
        2,
-       -1, 1, 415,
-       97, 0, 204
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row62[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row63[] = {
-       1,
-       -1, 1, 24
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row64[] = {
-       1,
-       -1, 1, 25
+       2,
+       -1, 3, 63,
+       12, 0, 277
 };
 static int parser_action_row65[] = {
-       4,
-       -1, 1, 166,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row66[] = {
-       1,
-       -1, 1, 173
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row67[] = {
-       1,
-       -1, 1, 174
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row68[] = {
-       1,
-       -1, 1, 183
+       2,
+       -1, 3, 67,
+       61, 0, 281
 };
 static int parser_action_row69[] = {
-       1,
-       -1, 1, 184
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 732,
+       61, 0, 282,
+       62, 0, 283,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 732,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 732,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row70[] = {
-       1,
-       -1, 1, 186
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row71[] = {
-       1,
-       -1, 1, 185
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row72[] = {
-       1,
-       -1, 1, 187
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row73[] = {
        1,
-       -1, 1, 188
+       -1, 1, 792
 };
 static int parser_action_row74[] = {
-       1,
-       -1, 1, 189
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row75[] = {
        3,
-       -1, 3, 74,
-       57, 0, 244,
-       76, 0, 245
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row76[] = {
        1,
-       -1, 1, 340
+       -1, 1, 53
 };
 static int parser_action_row77[] = {
-       1,
-       -1, 1, 389
+       4,
+       -1, 1, 51,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row78[] = {
        1,
-       -1, 1, 388
+       -1, 1, 493
 };
 static int parser_action_row79[] = {
-       3,
-       -1, 3, 78,
-       106, 0, 247,
-       107, 0, 248
+       1,
+       -1, 1, 494
 };
 static int parser_action_row80[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 503
 };
 static int parser_action_row81[] = {
-       3,
-       -1, 3, 80,
-       42, 0, 254,
-       101, 0, 255
+       1,
+       -1, 1, 504
 };
 static int parser_action_row82[] = {
        1,
-       -1, 1, 1110
+       -1, 1, 506
 };
 static int parser_action_row83[] = {
-       3,
-       -1, 1, 465,
-       13, 0, 256,
-       100, 0, 257
+       1,
+       -1, 1, 505
 };
 static int parser_action_row84[] = {
-       4,
-       -1, 1, 467,
-       13, 0, 258,
-       99, 0, 54,
-       100, 0, 259
+       1,
+       -1, 1, 507
 };
 static int parser_action_row85[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 508
 };
 static int parser_action_row86[] = {
        1,
-       -1, 1, 144
+       -1, 1, 509
 };
 static int parser_action_row87[] = {
-       2,
+       4,
        -1, 3, 86,
-       112, 0, 263
+       57, 0, 306,
+       76, 0, 307,
+       97, 0, 308
 };
 static int parser_action_row88[] = {
        1,
-       -1, 1, 148
+       -1, 1, 711
 };
 static int parser_action_row89[] = {
        1,
-       -1, 1, 482
+       -1, 1, 774
 };
 static int parser_action_row90[] = {
        1,
-       -1, 1, 481
+       -1, 1, 770
 };
 static int parser_action_row91[] = {
-       1,
-       -1, 1, 483
+       3,
+       -1, 3, 90,
+       107, 0, 310,
+       108, 0, 311
 };
 static int parser_action_row92[] = {
-       1,
-       -1, 1, 20
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row93[] = {
-       1,
-       -1, 1, 1079
+       3,
+       -1, 3, 92,
+       42, 0, 317,
+       102, 0, 318
 };
 static int parser_action_row94[] = {
        1,
-       -1, 1, 2
+       -1, 1, 1782
 };
 static int parser_action_row95[] = {
-       7,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       3,
+       -1, 1, 941,
+       13, 0, 319,
+       101, 0, 320
 };
 static int parser_action_row96[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       4,
+       -1, 1, 943,
+       13, 0, 321,
+       100, 0, 67,
+       101, 0, 322
 };
 static int parser_action_row97[] = {
-       1,
-       -1, 1, 4
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row98[] = {
        1,
-       -1, 1, 1081
+       -1, 1, 466
 };
 static int parser_action_row99[] = {
-       33,
-       -1, 1, 30,
-       13, 0, 31,
-       14, 0, 32,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 98,
+       113, 0, 326
 };
 static int parser_action_row100[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       1,
+       -1, 1, 470
 };
 static int parser_action_row101[] = {
        1,
-       -1, 1, 1083
+       -1, 1, 958
 };
 static int parser_action_row102[] = {
        1,
-       -1, 1, 8
+       -1, 1, 957
 };
 static int parser_action_row103[] = {
        1,
-       -1, 1, 500
+       -1, 1, 959
 };
 static int parser_action_row104[] = {
        1,
-       -1, 1, 1113
+       -1, 1, 47
 };
 static int parser_action_row105[] = {
-       4,
-       -1, 1, 489,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 1751
 };
 static int parser_action_row106[] = {
-       4,
-       -1, 1, 488,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 2
 };
 static int parser_action_row107[] = {
-       1,
-       -1, 1, 1115
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row108[] = {
-       7,
-       -1, 1, 485,
-       0, 0, 102,
-       1, 0, 103,
-       10, 1, 1076,
-       29, 1, 1076,
-       98, 0, 271,
-       112, 1, 1076
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row109[] = {
-       4,
-       -1, 1, 485,
-       0, 0, 102,
-       1, 0, 103,
-       98, 0, 271
+       1,
+       -1, 1, 4
 };
 static int parser_action_row110[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       1,
+       -1, 1, 1753
 };
 static int parser_action_row111[] = {
-       1,
-       -1, 1, 3
+       42,
+       -1, 1, 944,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 38,
+       13, 0, 39,
+       14, 0, 330,
+       16, 0, 41,
+       17, 0, 42,
+       18, 0, 43,
+       19, 0, 331,
+       20, 0, 332,
+       21, 0, 333,
+       22, 0, 334,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row112[] = {
-       7,
-       -1, 1, 495,
+       5,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       29, 1, 497,
-       98, 0, 3,
-       112, 1, 497,
-       114, 1, 22
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row113[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       1,
+       -1, 1, 1755
 };
 static int parser_action_row114[] = {
        1,
-       -1, 1, 5
+       -1, 1, 8
 };
 static int parser_action_row115[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       1,
+       -1, 1, 976
 };
 static int parser_action_row116[] = {
        1,
-       -1, 1, 9
+       -1, 1, 1785
 };
 static int parser_action_row117[] = {
-       2,
-       -1, 1, 784,
-       55, 0, 277
+       4,
+       -1, 1, 965,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row118[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 964,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row119[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1787
 };
 static int parser_action_row120[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       7,
+       -1, 1, 961,
+       0, 0, 114,
+       1, 0, 115,
+       10, 1, 1748,
+       29, 1, 1748,
+       99, 0, 338,
+       113, 1, 1748
 };
 static int parser_action_row121[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 1, 961,
+       0, 0, 114,
+       1, 0, 115,
+       99, 0, 338
 };
 static int parser_action_row122[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       13,
+       -1, 3, 121,
+       4, 0, 210,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 211,
+       18, 0, 43,
+       19, 0, 339,
+       20, 0, 340,
+       21, 0, 341,
+       22, 0, 342
 };
 static int parser_action_row123[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row124[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row125[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row126[] = {
-       14,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 287,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
-};
-static int parser_action_row127[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row127[] = {
+       1,
+       -1, 1, 3
+};
 static int parser_action_row128[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 1, 973,
+       99, 0, 3,
+       113, 1, 973,
+       115, 1, 49
 };
 static int parser_action_row129[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row130[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 5
 };
 static int parser_action_row131[] = {
-       3,
-       -1, 1, 772,
-       55, 0, 277,
-       61, 0, 216
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row132[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       1,
+       -1, 1, 9
 };
 static int parser_action_row133[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 3, 132,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row134[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 1747,
+       0, 0, 114,
+       1, 0, 115
 };
 static int parser_action_row135[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 1749,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row136[] = {
-       1,
-       -1, 1, 808
+       4,
+       -1, 3, 135,
+       10, 0, 356,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row137[] = {
        1,
-       -1, 1, 363
+       -1, 1, 95
 };
 static int parser_action_row138[] = {
-       1,
-       -1, 1, 200
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row139[] = {
-       3,
+       2,
        -1, 3, 138,
-       42, 0, 299,
-       101, 0, 300
+       58, 0, 359
 };
 static int parser_action_row140[] = {
-       2,
-       -1, 1, 465,
-       100, 0, 301
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row141[] = {
        1,
-       -1, 1, 450
+       -1, 1, 411
 };
 static int parser_action_row142[] = {
-       4,
-       -1, 1, 714,
-       30, 0, 302,
-       31, 0, 303,
-       33, 0, 304
+       1,
+       -1, 1, 412
 };
 static int parser_action_row143[] = {
        1,
-       -1, 1, 716
+       -1, 1, 413
 };
 static int parser_action_row144[] = {
        1,
-       -1, 1, 721
+       -1, 1, 414
 };
 static int parser_action_row145[] = {
-       10,
-       -1, 1, 723,
-       40, 0, 305,
-       83, 0, 306,
-       87, 0, 307,
-       88, 0, 308,
-       89, 0, 309,
-       90, 0, 310,
-       92, 0, 311,
-       93, 0, 312,
-       95, 0, 313
+       1,
+       -1, 1, 415
 };
 static int parser_action_row146[] = {
-       2,
-       -1, 1, 732,
-       84, 0, 314
+       1,
+       -1, 1, 416
 };
 static int parser_action_row147[] = {
-       2,
-       -1, 1, 734,
-       85, 0, 315
+       1,
+       -1, 1, 417
 };
 static int parser_action_row148[] = {
-       3,
-       -1, 1, 736,
-       91, 0, 316,
-       94, 0, 317
+       1,
+       -1, 1, 418
 };
 static int parser_action_row149[] = {
-       3,
-       -1, 1, 738,
-       77, 0, 318,
-       78, 0, 319
+       1,
+       -1, 1, 419
 };
 static int parser_action_row150[] = {
-       4,
-       -1, 1, 741,
-       79, 0, 320,
-       81, 0, 321,
-       82, 0, 322
+       1,
+       -1, 1, 420
 };
 static int parser_action_row151[] = {
        1,
-       -1, 1, 744
+       -1, 1, 421
 };
 static int parser_action_row152[] = {
-       2,
-       -1, 1, 748,
-       80, 0, 323
+       1,
+       -1, 1, 422
 };
 static int parser_action_row153[] = {
        1,
-       -1, 1, 750
+       -1, 1, 425
 };
 static int parser_action_row154[] = {
-       3,
-       -1, 1, 755,
-       57, 0, 244,
-       76, 0, 324
+       1,
+       -1, 1, 423
 };
 static int parser_action_row155[] = {
        1,
-       -1, 1, 760
+       -1, 1, 427
 };
 static int parser_action_row156[] = {
-       3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 326
+       1,
+       -1, 1, 426
 };
 static int parser_action_row157[] = {
-       2,
-       -1, 1, 164,
-       50, 1, 1001
+       1,
+       -1, 1, 424
 };
 static int parser_action_row158[] = {
        1,
-       -1, 1, 264
+       -1, 1, 428
 };
 static int parser_action_row159[] = {
        1,
-       -1, 1, 165
+       -1, 1, 430
 };
 static int parser_action_row160[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 328,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 433,
+       61, 0, 282,
+       62, 0, 361
 };
 static int parser_action_row161[] = {
-       2,
-       -1, 3, 160,
-       50, 0, 197
+       1,
+       -1, 1, 949
 };
 static int parser_action_row162[] = {
-       3,
-       -1, 1, 161,
-       60, 0, 333,
-       97, 0, 204
+       2,
+       -1, 3, 161,
+       16, 0, 362
 };
 static int parser_action_row163[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row164[] = {
-       3,
-       -1, 1, 1075,
-       0, 0, 102,
-       1, 0, 103
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row165[] = {
-       3,
-       -1, 1, 1077,
-       0, 0, 1,
-       1, 0, 2
+       22,
+       -1, 3, 164,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       101, 0, 365
 };
 static int parser_action_row166[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 437
 };
 static int parser_action_row167[] = {
-       1,
-       -1, 1, 276
+       23,
+       -1, 3, 166,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row168[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 328,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row169[] = {
        2,
-       -1, 3, 168,
-       50, 0, 197
+       -1, 1, 1406,
+       55, 0, 370
 };
 static int parser_action_row170[] = {
        3,
-       -1, 3, 169,
-       55, 0, 341,
-       100, 0, 342
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row171[] = {
-       2,
-       -1, 1, 364,
-       55, 0, 277
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row172[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row173[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row174[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row175[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row176[] = {
-       16,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row177[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row178[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       15,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 380,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row179[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row180[] = {
-       3,
-       -1, 1, 352,
-       55, 0, 277,
-       61, 0, 216
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row181[] = {
-       1,
-       -1, 1, 176
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row182[] = {
-       4,
-       -1, 1, 294,
-       30, 0, 357,
-       31, 0, 358,
-       33, 0, 359
+       15,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 380,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       100, 0, 67,
+       101, 0, 386,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row183[] = {
-       1,
-       -1, 1, 296
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row184[] = {
-       1,
-       -1, 1, 301
+       3,
+       -1, 1, 1392,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row185[] = {
-       10,
-       -1, 1, 303,
-       40, 0, 360,
-       83, 0, 361,
-       87, 0, 362,
-       88, 0, 363,
-       89, 0, 364,
-       90, 0, 365,
-       92, 0, 366,
-       93, 0, 367,
-       95, 0, 368
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row186[] = {
        2,
-       -1, 1, 312,
-       84, 0, 369
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row187[] = {
        2,
-       -1, 1, 314,
-       85, 0, 370
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row188[] = {
-       3,
-       -1, 1, 316,
-       91, 0, 371,
-       94, 0, 372
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row189[] = {
-       3,
-       -1, 1, 318,
-       77, 0, 373,
-       78, 0, 374
+       1,
+       -1, 1, 1430
 };
 static int parser_action_row190[] = {
-       4,
-       -1, 1, 321,
-       79, 0, 375,
-       81, 0, 376,
-       82, 0, 377
+       1,
+       -1, 1, 745
 };
 static int parser_action_row191[] = {
        1,
-       -1, 1, 324
+       -1, 1, 525
 };
 static int parser_action_row192[] = {
-       2,
-       -1, 1, 328,
-       80, 0, 378
+       3,
+       -1, 3, 191,
+       42, 0, 396,
+       102, 0, 397
 };
 static int parser_action_row193[] = {
-       1,
-       -1, 1, 330
+       2,
+       -1, 1, 941,
+       101, 0, 398
 };
 static int parser_action_row194[] = {
-       3,
-       -1, 1, 335,
-       57, 0, 244,
-       76, 0, 379
+       1,
+       -1, 1, 926
 };
 static int parser_action_row195[] = {
-       3,
-       -1, 3, 194,
-       42, 0, 381,
-       101, 0, 382
+       4,
+       -1, 1, 1300,
+       30, 0, 399,
+       31, 0, 400,
+       33, 0, 401
 };
 static int parser_action_row196[] = {
-       2,
-       -1, 1, 465,
-       100, 0, 383
+       1,
+       -1, 1, 1302
 };
 static int parser_action_row197[] = {
-       3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 384
+       1,
+       -1, 1, 1307
 };
 static int parser_action_row198[] = {
-       2,
-       -1, 1, 208,
-       100, 0, 386
+       10,
+       -1, 1, 1309,
+       40, 0, 402,
+       83, 0, 403,
+       87, 0, 404,
+       88, 0, 405,
+       89, 0, 406,
+       90, 0, 407,
+       92, 0, 408,
+       93, 0, 409,
+       95, 0, 410
 };
 static int parser_action_row199[] = {
-       1,
-       -1, 1, 182
+       2,
+       -1, 1, 1318,
+       84, 0, 411
 };
 static int parser_action_row200[] = {
-       1,
-       -1, 1, 179
+       2,
+       -1, 1, 1320,
+       85, 0, 412
 };
 static int parser_action_row201[] = {
-       4,
-       -1, 1, 352,
-       55, 0, 277,
-       60, 0, 387,
-       61, 0, 216
+       3,
+       -1, 1, 1322,
+       91, 0, 413,
+       94, 0, 414
 };
 static int parser_action_row202[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 1324,
+       77, 0, 415,
+       78, 0, 416
 };
 static int parser_action_row203[] = {
-       2,
-       -1, 1, 291,
-       25, 0, 389
+       4,
+       -1, 1, 1327,
+       79, 0, 417,
+       81, 0, 418,
+       82, 0, 419
 };
 static int parser_action_row204[] = {
-       4,
-       -1, 3, 203,
-       48, 0, 390,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 1330
 };
 static int parser_action_row205[] = {
-       3,
-       -1, 1, 30,
-       14, 0, 32,
-       55, 0, 397
+       2,
+       -1, 1, 1334,
+       80, 0, 420
 };
 static int parser_action_row206[] = {
        1,
-       -1, 1, 414
+       -1, 1, 1336
 };
 static int parser_action_row207[] = {
-       1,
-       -1, 1, 380
+       4,
+       -1, 1, 1341,
+       57, 0, 306,
+       76, 0, 421,
+       97, 0, 422
 };
 static int parser_action_row208[] = {
        1,
-       -1, 1, 381
+       -1, 1, 1371
 };
 static int parser_action_row209[] = {
-       1,
-       -1, 1, 382
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 424
 };
 static int parser_action_row210[] = {
-       1,
-       -1, 1, 383
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row211[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 400,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row212[] = {
-       4,
+       23,
        -1, 3, 211,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row213[] = {
-       1,
-       -1, 1, 177
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row214[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row215[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 454,
-       28, 0, 455,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row216[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row217[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row218[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 486,
+       50, 1, 1673
 };
 static int parser_action_row219[] = {
-       1,
-       -1, 1, 252
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row220[] = {
        1,
-       -1, 1, 253
+       -1, 1, 610
 };
 static int parser_action_row221[] = {
        1,
-       -1, 1, 254
+       -1, 1, 487
 };
 static int parser_action_row222[] = {
-       1,
-       -1, 1, 255
+       32,
+       -1, 1, 944,
+       10, 0, 434,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row223[] = {
-       1,
-       -1, 1, 256
+       2,
+       -1, 3, 222,
+       50, 0, 263
 };
 static int parser_action_row224[] = {
-       1,
-       -1, 1, 257
+       3,
+       -1, 1, 483,
+       60, 0, 439,
+       98, 0, 270
 };
 static int parser_action_row225[] = {
        1,
-       -1, 1, 258
+       -1, 1, 98
 };
 static int parser_action_row226[] = {
-       1,
-       -1, 1, 259
+       10,
+       -1, 3, 225,
+       3, 0, 442,
+       4, 0, 443,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 444,
+       18, 0, 43
 };
 static int parser_action_row227[] = {
-       1,
-       -1, 1, 260
+       10,
+       -1, 3, 226,
+       3, 0, 446,
+       4, 0, 447,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 448,
+       18, 0, 43
 };
 static int parser_action_row228[] = {
-       1,
-       -1, 1, 261
+       10,
+       -1, 3, 227,
+       3, 0, 450,
+       4, 0, 451,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 452,
+       18, 0, 43
 };
 static int parser_action_row229[] = {
-       1,
-       -1, 1, 262
+       10,
+       -1, 3, 228,
+       3, 0, 454,
+       4, 0, 455,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 456,
+       18, 0, 43
 };
 static int parser_action_row230[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row231[] = {
-       13,
-       -1, 1, 351,
-       62, 0, 463,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row232[] = {
        1,
-       -1, 1, 194
+       -1, 1, 622
 };
 static int parser_action_row233[] = {
-       1,
-       -1, 1, 384
+       32,
+       -1, 1, 944,
+       10, 0, 434,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row234[] = {
-       1,
-       -1, 1, 385
+       2,
+       -1, 3, 233,
+       50, 0, 263
 };
 static int parser_action_row235[] = {
-       1,
-       -1, 1, 387
+       3,
+       -1, 3, 234,
+       55, 0, 462,
+       101, 0, 463
 };
 static int parser_action_row236[] = {
-       1,
-       -1, 1, 386
+       2,
+       -1, 1, 746,
+       55, 0, 370
 };
 static int parser_action_row237[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row238[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row239[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row240[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row241[] = {
-       10,
-       -1, 3, 240,
-       3, 0, 469,
-       4, 0, 470,
-       5, 0, 471,
-       6, 0, 472,
-       7, 0, 473,
-       8, 0, 474,
-       9, 0, 475,
-       11, 0, 476,
-       18, 0, 477
+       17,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row242[] = {
-       1,
-       -1, 1, 1096
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row243[] = {
-       32,
-       -1, 1, 168,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row244[] = {
-       4,
-       -1, 1, 167,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       17,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 476,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row245[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row246[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 732,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row247[] = {
-       13,
-       -1, 1, 365,
-       62, 0, 484,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 496
 };
 static int parser_action_row248[] = {
-       1,
-       -1, 1, 410
+       4,
+       -1, 1, 640,
+       30, 0, 482,
+       31, 0, 483,
+       33, 0, 484
 };
 static int parser_action_row249[] = {
        1,
-       -1, 1, 411
+       -1, 1, 642
 };
 static int parser_action_row250[] = {
        1,
-       -1, 1, 1102
+       -1, 1, 647
 };
 static int parser_action_row251[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       10,
+       -1, 1, 649,
+       40, 0, 485,
+       83, 0, 486,
+       87, 0, 487,
+       88, 0, 488,
+       89, 0, 489,
+       90, 0, 490,
+       92, 0, 491,
+       93, 0, 492,
+       95, 0, 493
 };
 static int parser_action_row252[] = {
        2,
-       -1, 1, 415,
-       97, 0, 204
+       -1, 1, 658,
+       84, 0, 494
 };
 static int parser_action_row253[] = {
-       3,
-       -1, 3, 252,
-       106, 0, 247,
-       107, 0, 248
+       2,
+       -1, 1, 660,
+       85, 0, 495
 };
 static int parser_action_row254[] = {
-       25,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       106, 1, 406,
-       107, 1, 406,
-       108, 0, 60
+       3,
+       -1, 1, 662,
+       91, 0, 496,
+       94, 0, 497
 };
 static int parser_action_row255[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 360,
-       76, 1, 360,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 664,
+       77, 0, 498,
+       78, 0, 499
 };
 static int parser_action_row256[] = {
-       13,
-       -1, 1, 342,
-       62, 0, 493,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       4,
+       -1, 1, 667,
+       79, 0, 500,
+       81, 0, 501,
+       82, 0, 502
 };
 static int parser_action_row257[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 670
 };
 static int parser_action_row258[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 354,
-       62, 0, 497,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 354,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 674,
+       80, 0, 503
 };
 static int parser_action_row259[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 676
 };
 static int parser_action_row260[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 358,
-       61, 0, 216,
-       62, 0, 502,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 358,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 1, 681,
+       57, 0, 306,
+       76, 0, 504,
+       97, 0, 505
 };
 static int parser_action_row261[] = {
-       1,
-       -1, 1, 1111
+       3,
+       -1, 3, 260,
+       42, 0, 507,
+       102, 0, 508
 };
 static int parser_action_row262[] = {
-       3,
-       -1, 1, 466,
-       13, 0, 506,
-       100, 0, 507
+       2,
+       -1, 1, 941,
+       101, 0, 509
 };
 static int parser_action_row263[] = {
-       2,
-       -1, 3, 262,
-       104, 0, 508
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 510
 };
 static int parser_action_row264[] = {
-       1,
-       -1, 1, 145
+       2,
+       -1, 1, 536,
+       101, 0, 512
 };
 static int parser_action_row265[] = {
        1,
-       -1, 1, 6
+       -1, 1, 502
 };
 static int parser_action_row266[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       1,
+       -1, 1, 499
 };
 static int parser_action_row267[] = {
-       1,
-       -1, 1, 10
+       4,
+       -1, 1, 732,
+       55, 0, 370,
+       60, 0, 513,
+       61, 0, 282
 };
 static int parser_action_row268[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row269[] = {
-       1,
-       -1, 1, 12
+       2,
+       -1, 1, 637,
+       25, 0, 515
 };
 static int parser_action_row270[] = {
-       1,
-       -1, 1, 493
+       4,
+       -1, 3, 269,
+       48, 0, 516,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row271[] = {
-       1,
-       -1, 1, 492
+       10,
+       -1, 3, 270,
+       6, 0, 523,
+       14, 0, 524,
+       18, 0, 525,
+       19, 0, 526,
+       20, 0, 527,
+       21, 0, 528,
+       22, 0, 529,
+       55, 0, 530,
+       101, 0, 531
 };
 static int parser_action_row272[] = {
-       4,
-       -1, 1, 490,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 799
 };
 static int parser_action_row273[] = {
-       9,
-       -1, 3, 272,
-       4, 0, 470,
-       5, 0, 471,
-       6, 0, 472,
-       7, 0, 473,
-       8, 0, 474,
-       9, 0, 475,
-       11, 0, 476,
-       18, 0, 477
+       1,
+       -1, 1, 762
 };
 static int parser_action_row274[] = {
        1,
-       -1, 1, 7
+       -1, 1, 763
 };
 static int parser_action_row275[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3,
-       114, 1, 22
+       1,
+       -1, 1, 764
 };
 static int parser_action_row276[] = {
        1,
-       -1, 1, 11
+       -1, 1, 765
 };
 static int parser_action_row277[] = {
-       1,
-       -1, 1, 13
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 534,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row278[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 277,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row279[] = {
        1,
-       -1, 1, 783
+       -1, 1, 497
 };
 static int parser_action_row280[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row281[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 116,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 588,
+       28, 0, 589,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row282[] = {
-       4,
-       -1, 3, 281,
-       48, 0, 390,
-       99, 0, 391,
-       100, 0, 392
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row283[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row284[] = {
-       1,
-       -1, 1, 800
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row285[] = {
        1,
-       -1, 1, 801
+       -1, 1, 598
 };
 static int parser_action_row286[] = {
        1,
-       -1, 1, 802
+       -1, 1, 599
 };
 static int parser_action_row287[] = {
        1,
-       -1, 1, 803
+       -1, 1, 600
 };
 static int parser_action_row288[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 601
 };
 static int parser_action_row289[] = {
-       3,
-       -1, 3, 288,
-       42, 0, 299,
-       101, 0, 519
+       1,
+       -1, 1, 602
 };
 static int parser_action_row290[] = {
-       3,
-       -1, 3, 289,
-       57, 0, 244,
-       76, 0, 520
+       1,
+       -1, 1, 603
 };
 static int parser_action_row291[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       56, 0, 521,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 522,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 604
 };
 static int parser_action_row292[] = {
        1,
-       -1, 1, 752
+       -1, 1, 605
 };
 static int parser_action_row293[] = {
        1,
-       -1, 1, 751
+       -1, 1, 606
 };
 static int parser_action_row294[] = {
        1,
-       -1, 1, 753
+       -1, 1, 607
 };
 static int parser_action_row295[] = {
        1,
-       -1, 1, 771
+       -1, 1, 608
 };
 static int parser_action_row296[] = {
-       1,
-       -1, 1, 804
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row297[] = {
-       1,
-       -1, 1, 805
+       13,
+       -1, 1, 731,
+       62, 0, 597,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row298[] = {
        1,
-       -1, 1, 807
+       -1, 1, 518
 };
 static int parser_action_row299[] = {
        1,
-       -1, 1, 806
+       -1, 1, 766
 };
 static int parser_action_row300[] = {
-       2,
-       -1, 1, 780,
-       55, 0, 277
+       1,
+       -1, 1, 767
 };
 static int parser_action_row301[] = {
        1,
-       -1, 1, 762
+       -1, 1, 769
 };
 static int parser_action_row302[] = {
-       2,
-       -1, 1, 774,
-       55, 0, 277
+       1,
+       -1, 1, 768
 };
 static int parser_action_row303[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 302,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row304[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       25, 0, 529
+       1,
+       -1, 1, 1768
 };
 static int parser_action_row305[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       33,
+       -1, 1, 488,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row306[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 52,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row307[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row308[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row309[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 308,
+       76, 0, 605
 };
 static int parser_action_row310[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       13,
+       -1, 1, 747,
+       62, 0, 606,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row311[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 795
 };
 static int parser_action_row312[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 796
 };
 static int parser_action_row313[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1774
 };
 static int parser_action_row314[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row315[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row316[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 315,
+       107, 0, 310,
+       108, 0, 311
 };
 static int parser_action_row317[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       27,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       107, 1, 791,
+       108, 1, 791,
+       109, 0, 73
 };
 static int parser_action_row318[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 740,
+       76, 1, 740,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 740,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row319[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       13,
+       -1, 1, 714,
+       62, 0, 615,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row320[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row321[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 734,
+       62, 0, 619,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 734,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 734,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row322[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row323[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 738,
+       61, 0, 282,
+       62, 0, 624,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 738,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 738,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row324[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1783
 };
 static int parser_action_row325[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 942,
+       13, 0, 628,
+       101, 0, 629
 };
 static int parser_action_row326[] = {
-       1,
-       -1, 1, 785
+       2,
+       -1, 3, 325,
+       105, 0, 630
 };
 static int parser_action_row327[] = {
-       3,
-       -1, 1, 778,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 467
 };
 static int parser_action_row328[] = {
-       2,
-       -1, 1, 466,
-       100, 0, 553
+       1,
+       -1, 1, 6
 };
 static int parser_action_row329[] = {
-       2,
-       -1, 1, 163,
-       50, 1, 1000
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row330[] = {
-       2,
-       -1, 3, 329,
-       54, 0, 554
+       1,
+       -1, 1, 10
 };
 static int parser_action_row331[] = {
-       2,
-       -1, 1, 162,
-       50, 1, 999
+       12,
+       -1, 3, 330,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 211,
+       18, 0, 43,
+       19, 0, 632,
+       20, 0, 633,
+       21, 0, 634,
+       22, 0, 635
 };
 static int parser_action_row332[] = {
-       4,
-       -1, 3, 331,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1, 0, 2
 };
 static int parser_action_row333[] = {
-       1,
-       -1, 1, 263
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row334[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row335[] = {
-       2,
-       -1, 1, 210,
-       62, 0, 558
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row336[] = {
-       2,
-       -1, 1, 161,
-       60, 0, 333
+       1,
+       -1, 1, 12
 };
 static int parser_action_row337[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 969
 };
 static int parser_action_row338[] = {
-       3,
-       -1, 1, 1076,
-       0, 0, 102,
-       1, 0, 103
+       1,
+       -1, 1, 968
 };
 static int parser_action_row339[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 966,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row340[] = {
-       4,
-       -1, 3, 339,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1, 0, 2
 };
 static int parser_action_row341[] = {
-       1,
-       -1, 1, 275
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row342[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row343[] = {
-       1,
-       -1, 1, 459
-};
-static int parser_action_row344[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row344[] = {
+       9,
+       -1, 3, 343,
+       4, 0, 443,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 444,
+       18, 0, 43
+};
 static int parser_action_row345[] = {
-       1,
-       -1, 1, 281
+       9,
+       -1, 3, 344,
+       4, 0, 447,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 448,
+       18, 0, 43
 };
 static int parser_action_row346[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       9,
+       -1, 3, 345,
+       4, 0, 451,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 452,
+       18, 0, 43
 };
 static int parser_action_row347[] = {
-       2,
-       -1, 1, 458,
-       59, 0, 567
+       9,
+       -1, 3, 346,
+       4, 0, 455,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 456,
+       18, 0, 43
 };
 static int parser_action_row348[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 7
 };
 static int parser_action_row349[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 170,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3,
+       115, 1, 49
 };
 static int parser_action_row350[] = {
-       4,
-       -1, 3, 349,
-       48, 0, 390,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 11
 };
 static int parser_action_row351[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 13
 };
 static int parser_action_row352[] = {
        3,
-       -1, 3, 351,
-       57, 0, 244,
-       76, 0, 572
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row353[] = {
-       3,
-       -1, 3, 352,
-       42, 0, 381,
-       101, 0, 573
+       2,
+       -1, 1, 937,
+       61, 0, 282
 };
 static int parser_action_row354[] = {
-       1,
-       -1, 1, 332
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row355[] = {
-       1,
-       -1, 1, 331
+       2,
+       -1, 3, 354,
+       101, 0, 649
 };
 static int parser_action_row356[] = {
-       1,
-       -1, 1, 333
+       3,
+       -1, 1, 1748,
+       0, 0, 114,
+       1, 0, 115
 };
 static int parser_action_row357[] = {
-       1,
-       -1, 1, 351
+       4,
+       -1, 3, 356,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row358[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row359[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       25, 0, 575
+       2,
+       -1, 1, 440,
+       101, 0, 652
 };
 static int parser_action_row360[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 429,
+       62, 0, 655
 };
 static int parser_action_row361[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 360,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row362[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 431
 };
 static int parser_action_row363[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row364[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 436
 };
 static int parser_action_row365[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 660
 };
 static int parser_action_row366[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 433,
+       62, 0, 361
 };
 static int parser_action_row367[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 950
 };
 static int parser_action_row368[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 952
 };
 static int parser_action_row369[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       22,
+       -1, 3, 368,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       101, 0, 365
 };
 static int parser_action_row370[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 369,
+       16, 0, 665
 };
 static int parser_action_row371[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row372[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1405
 };
 static int parser_action_row373[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row374[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       22,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row375[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 374,
+       48, 0, 516,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row376[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row377[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1422
 };
 static int parser_action_row378[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1423
 };
 static int parser_action_row379[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1424
 };
 static int parser_action_row380[] = {
+       1,
+       -1, 1, 1425
+};
+static int parser_action_row381[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row381[] = {
-       1,
-       -1, 1, 365
-};
 static int parser_action_row382[] = {
-       2,
-       -1, 1, 360,
-       55, 0, 277
+       3,
+       -1, 3, 381,
+       42, 0, 396,
+       102, 0, 672
 };
 static int parser_action_row383[] = {
-       1,
-       -1, 1, 342
+       4,
+       -1, 3, 382,
+       57, 0, 306,
+       76, 0, 673,
+       97, 0, 674
 };
 static int parser_action_row384[] = {
-       2,
-       -1, 1, 354,
-       55, 0, 277
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       56, 0, 675,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 676,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row385[] = {
-       3,
-       -1, 1, 358,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 1338
 };
 static int parser_action_row386[] = {
-       2,
-       -1, 1, 466,
-       100, 0, 600
+       1,
+       -1, 1, 1337
 };
 static int parser_action_row387[] = {
-       1,
-       -1, 1, 209
+       6,
+       -1, 1, 1364,
+       55, 0, 370,
+       57, 1, 1392,
+       61, 0, 282,
+       76, 1, 1392,
+       97, 1, 1392
 };
 static int parser_action_row388[] = {
-       1,
-       -1, 1, 293
+       2,
+       -1, 1, 941,
+       101, 0, 681
 };
 static int parser_action_row389[] = {
-       2,
-       -1, 1, 292,
-       25, 0, 601
+       4,
+       -1, 3, 388,
+       57, 0, 306,
+       76, 0, 682,
+       97, 0, 683
 };
 static int parser_action_row390[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 684
 };
 static int parser_action_row391[] = {
-       3,
-       -1, 3, 390,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 1339
 };
 static int parser_action_row392[] = {
-       2,
-       -1, 1, 469,
-       61, 0, 215
+       1,
+       -1, 1, 1391
 };
 static int parser_action_row393[] = {
-       2,
-       -1, 3, 392,
-       61, 0, 216
+       1,
+       -1, 1, 1426
 };
 static int parser_action_row394[] = {
-       3,
-       -1, 1, 812,
-       57, 0, 606,
-       97, 0, 607
+       1,
+       -1, 1, 1427
 };
 static int parser_action_row395[] = {
-       2,
-       -1, 3, 394,
-       99, 0, 610
+       1,
+       -1, 1, 1429
 };
 static int parser_action_row396[] = {
-       2,
-       -1, 3, 395,
-       76, 0, 611
+       1,
+       -1, 1, 1428
 };
 static int parser_action_row397[] = {
-       3,
-       -1, 3, 396,
-       99, 0, 612,
-       100, 0, 392
+       2,
+       -1, 1, 1400,
+       55, 0, 370
 };
 static int parser_action_row398[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1374
 };
 static int parser_action_row399[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       2,
+       -1, 1, 1394,
+       55, 0, 370
 };
 static int parser_action_row400[] = {
-       1,
-       -1, 1, 412
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row401[] = {
-       6,
-       -1, 1, 352,
-       55, 0, 277,
-       60, 0, 333,
-       61, 0, 216,
-       62, 1, 161,
-       97, 0, 204
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       25, 0, 689
 };
 static int parser_action_row402[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row403[] = {
-       1,
-       -1, 1, 288
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row404[] = {
        3,
-       -1, 3, 403,
-       99, 0, 391,
-       100, 0, 392
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row405[] = {
-       2,
-       -1, 3, 404,
-       60, 0, 620
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row406[] = {
        3,
-       -1, 1, 149,
-       30, 0, 621,
-       31, 0, 622
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row407[] = {
        3,
-       -1, 1, 415,
-       57, 0, 623,
-       97, 0, 204
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row408[] = {
-       25,
-       -1, 1, 1007,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row409[] = {
-       2,
-       -1, 1, 1013,
-       50, 0, 197
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row410[] = {
-       2,
-       -1, 1, 1010,
-       50, 0, 197
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row411[] = {
-       1,
-       -1, 1, 1012
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row412[] = {
-       2,
-       -1, 3, 411,
-       12, 0, 628
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row413[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row414[] = {
-       4,
-       -1, 1, 497,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       58, 0, 630
+       1, 0, 2
 };
 static int parser_action_row415[] = {
-       23,
-       -1, 1, 508,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row416[] = {
-       23,
-       -1, 1, 509,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row417[] = {
-       1,
-       -1, 1, 510
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row418[] = {
-       1,
-       -1, 1, 511
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row419[] = {
-       1,
-       -1, 1, 512
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row420[] = {
-       1,
-       -1, 1, 513
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row421[] = {
-       1,
-       -1, 1, 514
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row422[] = {
-       1,
-       -1, 1, 515
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row423[] = {
-       1,
-       -1, 1, 516
+       2,
+       -1, 3, 422,
+       76, 0, 712
 };
 static int parser_action_row424[] = {
-       23,
-       -1, 1, 517,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1407
 };
 static int parser_action_row425[] = {
-       1,
-       -1, 1, 518
+       3,
+       -1, 1, 1398,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row426[] = {
-       1,
-       -1, 1, 519
+       2,
+       -1, 1, 942,
+       101, 0, 714
 };
 static int parser_action_row427[] = {
-       1,
-       -1, 1, 522
+       3,
+       -1, 3, 426,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row428[] = {
-       1,
-       -1, 1, 520
+       4,
+       -1, 3, 427,
+       10, 0, 716,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row429[] = {
-       1,
-       -1, 1, 524
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row430[] = {
-       1,
-       -1, 1, 523
+       10,
+       -1, 3, 429,
+       3, 0, 719,
+       4, 0, 720,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 721,
+       18, 0, 43
 };
 static int parser_action_row431[] = {
-       1,
-       -1, 1, 521
+       10,
+       -1, 3, 430,
+       3, 0, 723,
+       4, 0, 724,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 725,
+       18, 0, 43
 };
 static int parser_action_row432[] = {
-       1,
-       -1, 1, 525
+       10,
+       -1, 3, 431,
+       3, 0, 727,
+       4, 0, 728,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 729,
+       18, 0, 43
 };
 static int parser_action_row433[] = {
-       1,
-       -1, 1, 527
+       10,
+       -1, 3, 432,
+       3, 0, 731,
+       4, 0, 732,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 733,
+       18, 0, 43
 };
 static int parser_action_row434[] = {
-       15,
-       -1, 1, 352,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 631,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 3, 433,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row435[] = {
-       1,
-       -1, 1, 438
+       2,
+       -1, 1, 485,
+       50, 1, 1672
 };
 static int parser_action_row436[] = {
-       1,
-       -1, 1, 1005
+       2,
+       -1, 3, 435,
+       54, 0, 736
 };
 static int parser_action_row437[] = {
-       1,
-       -1, 1, 1006
+       2,
+       -1, 1, 484,
+       50, 1, 1671
 };
 static int parser_action_row438[] = {
-       1,
-       -1, 1, 1015
+       4,
+       -1, 3, 437,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row439[] = {
        1,
-       -1, 1, 1017
+       -1, 1, 609
 };
 static int parser_action_row440[] = {
-       1,
-       -1, 1, 1016
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row441[] = {
-       1,
-       -1, 1, 1018
+       2,
+       -1, 1, 538,
+       62, 0, 740
 };
 static int parser_action_row442[] = {
-       1,
-       -1, 1, 1019
+       2,
+       -1, 1, 483,
+       60, 0, 439
 };
 static int parser_action_row443[] = {
-       1,
-       -1, 1, 1020
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row444[] = {
-       1,
-       -1, 1, 439
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row445[] = {
-       3,
-       -1, 1, 335,
-       57, 0, 244,
-       76, 0, 632
+       23,
+       -1, 3, 444,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row446[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row447[] = {
-       1,
-       -1, 1, 443
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row448[] = {
-       4,
-       -1, 1, 497,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       59, 0, 634
+       1, 0, 2
 };
 static int parser_action_row449[] = {
-       3,
+       23,
        -1, 3, 448,
-       42, 0, 381,
-       101, 0, 255
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row450[] = {
-       23,
-       -1, 1, 465,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 610,
-       100, 0, 642
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row451[] = {
-       1,
-       -1, 1, 530
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row452[] = {
-       1,
-       -1, 1, 442
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row453[] = {
-       1,
-       -1, 1, 440
+       23,
+       -1, 3, 452,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row454[] = {
-       23,
-       -1, 1, 467,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 612,
-       100, 0, 644
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row455[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row456[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row457[] = {
+       23,
+       -1, 3, 456,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row458[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row458[] = {
-       2,
-       -1, 1, 161,
-       60, 0, 333
-};
 static int parser_action_row459[] = {
-       2,
-       -1, 1, 397,
-       59, 0, 651
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row460[] = {
-       1,
-       -1, 1, 478
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row461[] = {
-       1,
-       -1, 1, 477
+       4,
+       -1, 3, 460,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row462[] = {
        1,
-       -1, 1, 225
+       -1, 1, 621
 };
 static int parser_action_row463[] = {
-       1,
-       -1, 1, 244
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row464[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 935
 };
 static int parser_action_row465[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row466[] = {
        1,
-       -1, 1, 85
+       -1, 1, 627
 };
 static int parser_action_row467[] = {
-       1,
-       -1, 1, 87
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row468[] = {
-       1,
-       -1, 1, 86
+       2,
+       -1, 1, 934,
+       59, 0, 765
 };
 static int parser_action_row469[] = {
-       1,
-       -1, 1, 88
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row470[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       24,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row471[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 470,
+       48, 0, 516,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row472[] = {
-       1,
-       -1, 1, 32
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row473[] = {
-       2,
+       4,
        -1, 3, 472,
-       5, 0, 658
+       57, 0, 306,
+       76, 0, 770,
+       97, 0, 771
 };
 static int parser_action_row474[] = {
-       1,
-       -1, 1, 34
+       3,
+       -1, 3, 473,
+       42, 0, 507,
+       102, 0, 772
 };
 static int parser_action_row475[] = {
        1,
-       -1, 1, 35
+       -1, 1, 678
 };
 static int parser_action_row476[] = {
        1,
-       -1, 1, 37
+       -1, 1, 677
 };
 static int parser_action_row477[] = {
-       23,
-       -1, 3, 476,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       6,
+       -1, 1, 704,
+       55, 0, 370,
+       57, 1, 732,
+       61, 0, 282,
+       76, 1, 732,
+       97, 1, 732
 };
 static int parser_action_row478[] = {
-       2,
+       4,
        -1, 3, 477,
-       5, 0, 684
+       57, 0, 306,
+       76, 0, 774,
+       97, 0, 775
 };
 static int parser_action_row479[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 941,
+       101, 0, 776
 };
 static int parser_action_row480[] = {
-       1,
-       -1, 1, 172
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 777
 };
 static int parser_action_row481[] = {
        1,
-       -1, 1, 1097
+       -1, 1, 679
 };
 static int parser_action_row482[] = {
-       32,
-       -1, 1, 169,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 731
 };
 static int parser_action_row483[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 522,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row484[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 687,
-       47, 0, 688,
-       99, 0, 54,
-       100, 0, 689
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       25, 0, 780
 };
 static int parser_action_row485[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row486[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row487[] = {
-       25,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       106, 1, 409,
-       107, 1, 409,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row488[] = {
-       1,
-       -1, 1, 403
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row489[] = {
-       1,
-       -1, 1, 1103
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row490[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row491[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row492[] = {
-       1,
-       -1, 1, 359
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row493[] = {
-       1,
-       -1, 1, 198
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row494[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row495[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row496[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row497[] = {
-       1,
-       -1, 1, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row498[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row499[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row500[] = {
-       13,
-       -1, 1, 353,
-       62, 0, 703,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row501[] = {
-       1,
-       -1, 1, 195
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row502[] = {
-       1,
-       -1, 1, 206
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row503[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row504[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row505[] = {
-       13,
-       -1, 1, 357,
-       62, 0, 707,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row506[] = {
-       1,
-       -1, 1, 197
+       2,
+       -1, 3, 505,
+       76, 0, 803
 };
 static int parser_action_row507[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 747
 };
 static int parser_action_row508[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 356,
-       62, 0, 710,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 356,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 740,
+       55, 0, 370
 };
 static int parser_action_row509[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 714
 };
 static int parser_action_row510[] = {
-       1,
-       -1, 1, 14
+       2,
+       -1, 1, 734,
+       55, 0, 370
 };
 static int parser_action_row511[] = {
-       8,
-       -1, 3, 510,
-       5, 0, 471,
-       6, 0, 472,
-       7, 0, 473,
-       8, 0, 474,
-       9, 0, 475,
-       11, 0, 476,
-       18, 0, 477
+       3,
+       -1, 1, 738,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row512[] = {
-       1,
-       -1, 1, 494
+       2,
+       -1, 1, 942,
+       101, 0, 806
 };
 static int parser_action_row513[] = {
        1,
-       -1, 1, 15
+       -1, 1, 537
 };
 static int parser_action_row514[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       56, 0, 715,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 522,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 639
 };
 static int parser_action_row515[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 638,
+       25, 0, 807
 };
 static int parser_action_row516[] = {
-       1,
-       -1, 1, 722
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row517[] = {
        3,
-       -1, 1, 757,
-       55, 0, 277,
-       76, 0, 718
+       -1, 3, 516,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row518[] = {
-       1,
-       -1, 1, 754
+       2,
+       -1, 1, 945,
+       61, 0, 281
 };
 static int parser_action_row519[] = {
-       4,
+       2,
        -1, 3, 518,
-       48, 0, 390,
-       99, 0, 391,
-       100, 0, 392
+       61, 0, 282
 };
 static int parser_action_row520[] = {
        3,
-       -1, 1, 759,
-       57, 1, 762,
-       76, 1, 762
+       -1, 1, 1437,
+       57, 0, 812,
+       98, 0, 813
 };
 static int parser_action_row521[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 520,
+       100, 0, 816
 };
 static int parser_action_row522[] = {
-       9,
-       -1, 1, 448,
-       0, 1, 451,
-       1, 1, 451,
-       10, 1, 451,
-       25, 1, 451,
-       56, 1, 451,
-       59, 1, 451,
-       98, 1, 451,
-       114, 1, 451
+       2,
+       -1, 3, 521,
+       76, 0, 817
 };
 static int parser_action_row523[] = {
-       4,
-       -1, 1, 352,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 722
+       3,
+       -1, 3, 522,
+       100, 0, 818,
+       101, 0, 518
 };
 static int parser_action_row524[] = {
-       2,
-       -1, 1, 377,
-       74, 0, 723
+       1,
+       -1, 1, 922
 };
 static int parser_action_row525[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       8,
+       -1, 3, 524,
+       6, 0, 523,
+       18, 0, 525,
+       19, 0, 820,
+       20, 0, 821,
+       21, 0, 822,
+       22, 0, 823,
+       101, 0, 531
 };
 static int parser_action_row526[] = {
-       2,
-       -1, 3, 525,
-       56, 0, 725
+       1,
+       -1, 1, 921
 };
 static int parser_action_row527[] = {
-       1,
-       -1, 1, 779
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row528[] = {
-       1,
-       -1, 1, 773
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row529[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 116,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row530[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row531[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 116,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row532[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 116,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 920
 };
 static int parser_action_row533[] = {
-       4,
-       -1, 3, 532,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 797
 };
 static int parser_action_row534[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 800,
+       55, 0, 830,
+       98, 0, 270
 };
 static int parser_action_row535[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       6,
+       -1, 1, 732,
+       55, 0, 370,
+       60, 0, 439,
+       61, 0, 282,
+       62, 1, 483,
+       98, 0, 270
 };
 static int parser_action_row536[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row537[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 634
 };
 static int parser_action_row538[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 3, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row539[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 3, 538,
+       60, 0, 836
 };
 static int parser_action_row540[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 471,
+       30, 0, 837,
+       31, 0, 838
 };
 static int parser_action_row541[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 800,
+       57, 0, 839,
+       98, 0, 270
 };
 static int parser_action_row542[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       27,
+       -1, 1, 1679,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row543[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 1685,
+       50, 0, 263
 };
 static int parser_action_row544[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 1682,
+       50, 0, 263
 };
 static int parser_action_row545[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1684
 };
 static int parser_action_row546[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 3, 545,
+       12, 0, 844
 };
 static int parser_action_row547[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row548[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       58, 0, 846
 };
 static int parser_action_row549[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       25,
+       -1, 1, 1029,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row550[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       25,
+       -1, 1, 1030,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row551[] = {
-       19,
-       -1, 1, 468,
-       13, 0, 116,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1031
 };
 static int parser_action_row552[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 749,
-       47, 0, 750,
-       99, 0, 54,
-       100, 0, 751
+       1,
+       -1, 1, 1032
 };
 static int parser_action_row553[] = {
        1,
-       -1, 1, 777
+       -1, 1, 1033
 };
 static int parser_action_row554[] = {
-       2,
-       -1, 1, 776,
-       55, 0, 277
+       1,
+       -1, 1, 1034
 };
 static int parser_action_row555[] = {
-       5,
-       -1, 3, 554,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 756,
-       98, 0, 3
+       1,
+       -1, 1, 1035
 };
 static int parser_action_row556[] = {
-       32,
-       -1, 1, 468,
-       10, 0, 759,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       54, 1, 168,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1036
 };
 static int parser_action_row557[] = {
-       4,
-       -1, 3, 556,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       19,
+       -1, 1, 1037,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 57,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 476,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row558[] = {
-       4,
-       -1, 3, 557,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       25,
+       -1, 1, 1038,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row559[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1039
 };
 static int parser_action_row560[] = {
-       2,
-       -1, 1, 211,
-       62, 0, 763
+       1,
+       -1, 1, 1040
 };
 static int parser_action_row561[] = {
-       2,
-       -1, 3, 560,
-       24, 0, 764
+       1,
+       -1, 1, 1043
 };
 static int parser_action_row562[] = {
-       2,
-       -1, 3, 561,
-       16, 0, 765
+       1,
+       -1, 1, 1041
 };
 static int parser_action_row563[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 759,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1045
 };
 static int parser_action_row564[] = {
-       4,
-       -1, 3, 563,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 1044
 };
 static int parser_action_row565[] = {
-       2,
-       -1, 3, 564,
-       100, 0, 342
+       1,
+       -1, 1, 1042
 };
 static int parser_action_row566[] = {
-       3,
-       -1, 3, 565,
-       16, 0, 768,
-       59, 0, 769
+       1,
+       -1, 1, 1046
 };
 static int parser_action_row567[] = {
-       2,
-       -1, 3, 566,
-       29, 0, 770
+       1,
+       -1, 1, 1048
 };
 static int parser_action_row568[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       15,
+       -1, 1, 732,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 847,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row569[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 913
 };
 static int parser_action_row570[] = {
        1,
-       -1, 1, 302
+       -1, 1, 1677
 };
 static int parser_action_row571[] = {
-       3,
-       -1, 1, 337,
-       55, 0, 277,
-       76, 0, 611
+       1,
+       -1, 1, 1678
 };
 static int parser_action_row572[] = {
        1,
-       -1, 1, 334
+       -1, 1, 1687
 };
 static int parser_action_row573[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1689
 };
 static int parser_action_row574[] = {
-       3,
-       -1, 1, 339,
-       57, 1, 342,
-       76, 1, 342
+       1,
+       -1, 1, 1688
 };
 static int parser_action_row575[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 170,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1690
 };
 static int parser_action_row576[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1691
 };
 static int parser_action_row577[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 170,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1692
 };
 static int parser_action_row578[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 170,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 914
 };
 static int parser_action_row579[] = {
        4,
-       -1, 3, 578,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       -1, 1, 681,
+       57, 0, 306,
+       76, 0, 848,
+       97, 0, 849
 };
 static int parser_action_row580[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row581[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 919
 };
 static int parser_action_row582[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       59, 0, 851
 };
 static int parser_action_row583[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 582,
+       42, 0, 507,
+       102, 0, 318
 };
 static int parser_action_row584[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       23,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 816,
+       101, 0, 860
 };
 static int parser_action_row585[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1051
 };
 static int parser_action_row586[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 918
 };
 static int parser_action_row587[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 915
 };
 static int parser_action_row588[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 818,
+       101, 0, 862
 };
 static int parser_action_row589[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row590[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row591[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row592[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 483,
+       60, 0, 439
 };
 static int parser_action_row593[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 782,
+       59, 0, 869
 };
 static int parser_action_row594[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 954
 };
 static int parser_action_row595[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 953
 };
 static int parser_action_row596[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 562
 };
 static int parser_action_row597[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 590
 };
 static int parser_action_row598[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 798,
-       47, 0, 688,
-       99, 0, 54,
-       100, 0, 799
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row599[] = {
-       1,
-       -1, 1, 353
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row600[] = {
-       1,
-       -1, 1, 357
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 874,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row601[] = {
-       2,
-       -1, 1, 356,
-       55, 0, 277
+       1,
+       -1, 1, 492
 };
 static int parser_action_row602[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1769
 };
 static int parser_action_row603[] = {
-       1,
-       -1, 1, 164
+       33,
+       -1, 1, 489,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row604[] = {
-       1,
-       -1, 1, 289
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 676,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row605[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 805,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 944,
+       13, 0, 885,
+       47, 0, 886,
+       100, 0, 67,
+       101, 0, 887
 };
 static int parser_action_row606[] = {
        3,
-       -1, 1, 812,
-       57, 0, 807,
-       97, 0, 607
-};
-static int parser_action_row607[] = {
-       3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row607[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
 static int parser_action_row608[] = {
-       3,
-       -1, 1, 30,
-       14, 0, 32,
-       55, 0, 810
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row609[] = {
-       1,
-       -1, 1, 811
+       27,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       107, 1, 794,
+       108, 1, 794,
+       109, 0, 73
 };
 static int parser_action_row610[] = {
        1,
-       -1, 1, 637
+       -1, 1, 788
 };
 static int parser_action_row611[] = {
        1,
-       -1, 1, 470
+       -1, 1, 1775
 };
 static int parser_action_row612[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row613[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row613[] = {
-       2,
-       -1, 1, 472,
-       61, 0, 215
-};
 static int parser_action_row614[] = {
-       2,
-       -1, 3, 613,
-       99, 0, 814
+       1,
+       -1, 1, 739
 };
 static int parser_action_row615[] = {
-       2,
-       -1, 1, 30,
-       14, 0, 32
+       1,
+       -1, 1, 522
 };
 static int parser_action_row616[] = {
-       4,
-       -1, 3, 615,
-       6, 0, 818,
-       18, 0, 819,
-       100, 0, 820
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row617[] = {
-       2,
-       -1, 3, 616,
-       62, 0, 822
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row618[] = {
-       2,
-       -1, 1, 161,
-       60, 0, 333
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row619[] = {
-       2,
-       -1, 3, 618,
-       16, 0, 824
+       1,
+       -1, 1, 532
 };
 static int parser_action_row620[] = {
-       3,
-       -1, 1, 415,
-       57, 0, 825,
-       97, 0, 204
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row621[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row622[] = {
-       4,
-       -1, 3, 621,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       13,
+       -1, 1, 733,
+       62, 0, 902,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row623[] = {
-       4,
-       -1, 3, 622,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 519
 };
 static int parser_action_row624[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 534
 };
 static int parser_action_row625[] = {
-       1,
-       -1, 1, 152
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row626[] = {
-       1,
-       -1, 1, 1008
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row627[] = {
-       1,
-       -1, 1, 1014
+       13,
+       -1, 1, 737,
+       62, 0, 906,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row628[] = {
        1,
-       -1, 1, 1011
+       -1, 1, 521
 };
 static int parser_action_row629[] = {
-       4,
-       -1, 3, 628,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row630[] = {
-       1,
-       -1, 1, 1009
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 736,
+       62, 0, 909,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 736,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 736,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row631[] = {
-       2,
-       -1, 1, 526,
-       62, 0, 832
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row632[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 14
 };
 static int parser_action_row633[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row634[] = {
-       2,
-       -1, 3, 633,
-       56, 0, 834
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row635[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row636[] = {
-       1,
-       -1, 1, 1098
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row637[] = {
-       2,
+       8,
        -1, 3, 636,
-       56, 0, 836
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 444,
+       18, 0, 43
 };
 static int parser_action_row638[] = {
-       2,
-       -1, 1, 395,
-       59, 0, 634
+       8,
+       -1, 3, 637,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 448,
+       18, 0, 43
 };
 static int parser_action_row639[] = {
-       2,
+       8,
        -1, 3, 638,
-       58, 0, 630
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 452,
+       18, 0, 43
 };
 static int parser_action_row640[] = {
-       1,
-       -1, 1, 508
+       8,
+       -1, 3, 639,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 456,
+       18, 0, 43
 };
 static int parser_action_row641[] = {
        1,
-       -1, 1, 509
+       -1, 1, 970
 };
 static int parser_action_row642[] = {
-       1,
-       -1, 1, 517
+       9,
+       -1, 3, 641,
+       4, 0, 720,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 721,
+       18, 0, 43
 };
 static int parser_action_row643[] = {
-       14,
-       -1, 1, 354,
-       55, 0, 277,
-       62, 0, 838,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       9,
+       -1, 3, 642,
+       4, 0, 724,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 725,
+       18, 0, 43
 };
 static int parser_action_row644[] = {
-       1,
-       -1, 1, 531
+       9,
+       -1, 3, 643,
+       4, 0, 728,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 729,
+       18, 0, 43
 };
 static int parser_action_row645[] = {
-       15,
-       -1, 1, 358,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 839,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       9,
+       -1, 3, 644,
+       4, 0, 732,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 733,
+       18, 0, 43
 };
 static int parser_action_row646[] = {
-       23,
-       -1, 1, 466,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 814,
-       100, 0, 840
+       1,
+       -1, 1, 15
 };
 static int parser_action_row647[] = {
-       1,
-       -1, 1, 533
+       2,
+       -1, 3, 646,
+       101, 0, 918
 };
 static int parser_action_row648[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       12,
+       -1, 3, 647,
+       0, 0, 100,
+       1, 0, 101,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       99, 0, 102,
+       101, 0, 531
 };
 static int parser_action_row649[] = {
-       3,
+       4,
        -1, 3, 648,
-       55, 0, 341,
-       100, 0, 342
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row650[] = {
        2,
-       -1, 1, 400,
-       75, 0, 844
+       -1, 1, 938,
+       61, 0, 282
 };
 static int parser_action_row651[] = {
-       2,
-       -1, 3, 650,
-       58, 0, 845
+       1,
+       -1, 1, 36
 };
 static int parser_action_row652[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 651,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row653[] = {
-       1,
-       -1, 1, 1100
+       3,
+       -1, 1, 800,
+       60, 0, 139,
+       98, 0, 270
 };
 static int parser_action_row654[] = {
        2,
-       -1, 1, 398,
-       59, 0, 651
+       -1, 3, 653,
+       56, 0, 934
 };
 static int parser_action_row655[] = {
-       1,
-       -1, 1, 224
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       59, 0, 935
 };
 static int parser_action_row656[] = {
        1,
-       -1, 1, 243
+       -1, 1, 432
 };
 static int parser_action_row657[] = {
-       3,
-       -1, 3, 656,
-       61, 0, 848,
-       100, 0, 849
+       1,
+       -1, 1, 481
 };
 static int parser_action_row658[] = {
-       4,
-       -1, 3, 657,
-       10, 0, 852,
-       61, 0, 848,
-       100, 0, 849
+       32,
+       -1, 1, 944,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row659[] = {
-       1,
-       -1, 1, 33
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row660[] = {
-       2,
+       12,
        -1, 3, 659,
-       58, 0, 854
+       0, 0, 100,
+       1, 0, 101,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       99, 0, 102,
+       101, 0, 531
 };
 static int parser_action_row661[] = {
-       1,
-       -1, 1, 89
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row662[] = {
-       1,
-       -1, 1, 90
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 946
 };
 static int parser_action_row663[] = {
-       1,
-       -1, 1, 91
+       3,
+       -1, 3, 662,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row664[] = {
        1,
-       -1, 1, 92
+       -1, 1, 997
 };
 static int parser_action_row665[] = {
        1,
-       -1, 1, 93
+       -1, 1, 951
 };
 static int parser_action_row666[] = {
-       1,
-       -1, 1, 94
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row667[] = {
-       1,
-       -1, 1, 95
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       56, 0, 950,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 676,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row668[] = {
-       1,
-       -1, 1, 96
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row669[] = {
        1,
-       -1, 1, 97
+       -1, 1, 1308
 };
 static int parser_action_row670[] = {
-       1,
-       -1, 1, 98
+       3,
+       -1, 1, 1343,
+       55, 0, 370,
+       76, 0, 953
 };
 static int parser_action_row671[] = {
        1,
-       -1, 1, 99
+       -1, 1, 1340
 };
 static int parser_action_row672[] = {
-       1,
-       -1, 1, 100
+       4,
+       -1, 3, 671,
+       48, 0, 516,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row673[] = {
-       1,
-       -1, 1, 103
+       4,
+       -1, 1, 1346,
+       57, 1, 1374,
+       76, 1, 1374,
+       97, 1, 1374
 };
 static int parser_action_row674[] = {
-       1,
-       -1, 1, 101
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row675[] = {
-       1,
-       -1, 1, 105
+       2,
+       -1, 3, 674,
+       76, 0, 957
 };
 static int parser_action_row676[] = {
-       1,
-       -1, 1, 104
+       9,
+       -1, 1, 924,
+       0, 1, 927,
+       1, 1, 927,
+       10, 1, 927,
+       25, 1, 927,
+       56, 1, 927,
+       59, 1, 927,
+       99, 1, 927,
+       115, 1, 927
 };
 static int parser_action_row677[] = {
-       1,
-       -1, 1, 102
+       4,
+       -1, 1, 732,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 958
 };
 static int parser_action_row678[] = {
-       1,
-       -1, 1, 106
+       2,
+       -1, 1, 759,
+       74, 0, 959
 };
 static int parser_action_row679[] = {
-       1,
-       -1, 1, 108
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row680[] = {
-       3,
-       -1, 1, 111,
-       61, 0, 216,
-       62, 0, 855
+       2,
+       -1, 3, 679,
+       56, 0, 961
 };
 static int parser_action_row681[] = {
-       1,
-       -1, 1, 473
+       4,
+       -1, 1, 1363,
+       57, 1, 1391,
+       76, 1, 1391,
+       97, 1, 1391
 };
 static int parser_action_row682[] = {
        5,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       60, 0, 857
+       -1, 1, 1366,
+       55, 0, 370,
+       57, 1, 1394,
+       76, 1, 1394,
+       97, 1, 1394
 };
 static int parser_action_row683[] = {
-       22,
-       -1, 3, 682,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       100, 0, 861
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row684[] = {
-       23,
+       2,
        -1, 3, 683,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       76, 0, 964
 };
 static int parser_action_row685[] = {
-       1,
-       -1, 1, 36
+       6,
+       -1, 1, 1370,
+       55, 0, 370,
+       57, 1, 1398,
+       61, 0, 282,
+       76, 1, 1398,
+       97, 1, 1398
 };
 static int parser_action_row686[] = {
-       3,
-       -1, 3, 685,
-       99, 0, 391,
-       100, 0, 392
+       2,
+       -1, 1, 942,
+       101, 0, 966
 };
 static int parser_action_row687[] = {
-       2,
-       -1, 3, 686,
-       58, 0, 866
+       1,
+       -1, 1, 1399
 };
 static int parser_action_row688[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 362,
-       76, 1, 362,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1393
 };
 static int parser_action_row689[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row690[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row690[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 344,
-       61, 0, 216,
-       62, 0, 870,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 344,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
-};
 static int parser_action_row691[] = {
-       2,
-       -1, 3, 690,
-       101, 0, 874
+       22,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row692[] = {
-       3,
-       -1, 1, 465,
-       13, 0, 875,
-       100, 0, 876
+       22,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row693[] = {
        4,
-       -1, 1, 467,
-       13, 0, 877,
-       99, 0, 54,
-       100, 0, 878
+       -1, 3, 692,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row694[] = {
-       1,
-       -1, 1, 232
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row695[] = {
-       1,
-       -1, 1, 251
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row696[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row697[] = {
-       1,
-       -1, 1, 404
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row698[] = {
-       1,
-       -1, 1, 405
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row699[] = {
-       1,
-       -1, 1, 215
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row700[] = {
-       1,
-       -1, 1, 234
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row701[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       56, 0, 881,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 522,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row702[] = {
-       1,
-       -1, 1, 227
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row703[] = {
-       1,
-       -1, 1, 246
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row704[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row705[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row706[] = {
-       1,
-       -1, 1, 231
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row707[] = {
-       1,
-       -1, 1, 250
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row708[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row709[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row710[] = {
-       1,
-       -1, 1, 205
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row711[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       21,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row712[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 944,
+       13, 0, 990,
+       47, 0, 991,
+       100, 0, 67,
+       101, 0, 992
 };
 static int parser_action_row713[] = {
-       13,
-       -1, 1, 355,
-       62, 0, 889,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row714[] = {
        1,
-       -1, 1, 196
+       -1, 1, 1397
 };
 static int parser_action_row715[] = {
-       1,
-       -1, 1, 143
+       2,
+       -1, 1, 1396,
+       55, 0, 370
 };
 static int parser_action_row716[] = {
-       1,
-       -1, 1, 448
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row717[] = {
-       2,
+       4,
        -1, 3, 716,
-       56, 0, 891
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row718[] = {
        2,
-       -1, 3, 717,
-       24, 0, 892
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row719[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1001
+};
+static int parser_action_row720[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row720[] = {
-       1,
-       -1, 1, 756
-};
 static int parser_action_row721[] = {
-       2,
-       -1, 3, 720,
-       76, 0, 718
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row722[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 749,
-       47, 0, 750,
-       99, 0, 54,
-       100, 0, 751
+       23,
+       -1, 3, 721,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row723[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row724[] = {
-       1,
-       -1, 1, 378
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row725[] = {
-       2,
-       -1, 1, 454,
-       59, 0, 896
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row726[] = {
-       9,
-       -1, 1, 447,
-       0, 1, 449,
-       1, 1, 449,
-       10, 1, 449,
-       25, 1, 449,
-       56, 1, 449,
-       59, 1, 449,
-       98, 1, 449,
-       114, 1, 449
+       23,
+       -1, 3, 725,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row727[] = {
-       1,
-       -1, 1, 718
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row728[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 116,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row729[] = {
-       1,
-       -1, 1, 717
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row730[] = {
-       1,
-       -1, 1, 720
+       23,
+       -1, 3, 729,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row731[] = {
-       1,
-       -1, 1, 731
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row732[] = {
-       2,
-       -1, 1, 733,
-       84, 0, 314
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row733[] = {
-       2,
-       -1, 1, 724,
-       83, 0, 306
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row734[] = {
-       2,
-       -1, 1, 725,
-       83, 0, 306
+       23,
+       -1, 3, 733,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row735[] = {
-       2,
-       -1, 1, 726,
-       83, 0, 306
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row736[] = {
-       2,
-       -1, 1, 727,
-       83, 0, 306
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1021,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row737[] = {
-       2,
-       -1, 1, 728,
-       83, 0, 306
+       5,
+       -1, 3, 736,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1024,
+       99, 0, 3
 };
 static int parser_action_row738[] = {
-       2,
-       -1, 1, 729,
-       83, 0, 306
+       33,
+       -1, 1, 944,
+       10, 0, 1027,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       54, 1, 488,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row739[] = {
-       2,
-       -1, 1, 730,
-       83, 0, 306
+       4,
+       -1, 3, 738,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row740[] = {
-       2,
-       -1, 1, 735,
-       85, 0, 315
+       4,
+       -1, 3, 739,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row741[] = {
        3,
-       -1, 1, 737,
-       91, 0, 316,
-       94, 0, 317
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row742[] = {
-       3,
-       -1, 1, 739,
-       77, 0, 318,
-       78, 0, 319
+       2,
+       -1, 1, 539,
+       62, 0, 1031
 };
 static int parser_action_row743[] = {
        3,
-       -1, 1, 740,
-       77, 0, 318,
-       78, 0, 319
+       -1, 3, 742,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row744[] = {
        4,
-       -1, 1, 742,
-       79, 0, 320,
-       81, 0, 321,
-       82, 0, 322
+       -1, 3, 743,
+       10, 0, 1033,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row745[] = {
-       4,
-       -1, 1, 743,
-       79, 0, 320,
-       81, 0, 321,
-       82, 0, 322
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row746[] = {
-       1,
-       -1, 1, 745
+       3,
+       -1, 3, 745,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row747[] = {
-       1,
-       -1, 1, 746
+       3,
+       -1, 3, 746,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row748[] = {
-       1,
-       -1, 1, 747
+       4,
+       -1, 3, 747,
+       10, 0, 1038,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row749[] = {
-       1,
-       -1, 1, 749
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row750[] = {
-       2,
-       -1, 1, 782,
-       55, 0, 277
+       3,
+       -1, 3, 749,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row751[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 750,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row752[] = {
-       3,
-       -1, 1, 764,
-       55, 0, 277,
-       61, 0, 216
+       4,
+       -1, 3, 751,
+       10, 0, 1043,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row753[] = {
-       2,
-       -1, 3, 752,
-       101, 0, 903
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row754[] = {
-       2,
-       -1, 1, 465,
-       100, 0, 904
+       3,
+       -1, 3, 753,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row755[] = {
        3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 905
+       -1, 3, 754,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row756[] = {
-       1,
-       -1, 1, 775
+       4,
+       -1, 3, 755,
+       10, 0, 1048,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row757[] = {
-       1,
-       -1, 1, 1001
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row758[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 907,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 757,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row759[] = {
-       1,
-       -1, 1, 265
+       2,
+       -1, 3, 758,
+       24, 0, 1052
 };
 static int parser_action_row760[] = {
-       1,
-       -1, 1, 170
+       2,
+       -1, 3, 759,
+       16, 0, 1053
 };
 static int parser_action_row761[] = {
        32,
-       -1, 1, 468,
-       10, 0, 909,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       54, 1, 169,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       -1, 1, 944,
+       10, 0, 1027,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row762[] = {
-       1,
-       -1, 1, 160
+       4,
+       -1, 3, 761,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row763[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 762,
+       101, 0, 463
 };
 static int parser_action_row764[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 763,
+       16, 0, 1056,
+       59, 0, 1057
 };
 static int parser_action_row765[] = {
-       35,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 912,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       25, 0, 916,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 764,
+       29, 0, 1058
 };
 static int parser_action_row766[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 156,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row767[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 909,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row768[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       59, 0, 567
+       1,
+       -1, 1, 648
 };
 static int parser_action_row769[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 156,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 683,
+       55, 0, 370,
+       76, 0, 817
 };
 static int parser_action_row770[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 680
 };
 static int parser_action_row771[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row772[] = {
        2,
        -1, 3, 771,
-       100, 0, 953
+       76, 0, 1063
 };
 static int parser_action_row773[] = {
-       2,
-       -1, 3, 772,
-       24, 0, 954
+       4,
+       -1, 1, 686,
+       57, 1, 714,
+       76, 1, 714,
+       97, 1, 714
 };
 static int parser_action_row774[] = {
-       1,
-       -1, 1, 336
+       4,
+       -1, 1, 703,
+       57, 1, 731,
+       76, 1, 731,
+       97, 1, 731
 };
 static int parser_action_row775[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 798,
-       47, 0, 688,
-       99, 0, 54,
-       100, 0, 799
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row776[] = {
-       1,
-       -1, 1, 298
+       2,
+       -1, 3, 775,
+       76, 0, 1065
 };
 static int parser_action_row777[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 170,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       5,
+       -1, 1, 706,
+       55, 0, 370,
+       57, 1, 734,
+       76, 1, 734,
+       97, 1, 734
 };
 static int parser_action_row778[] = {
-       1,
-       -1, 1, 297
+       6,
+       -1, 1, 710,
+       55, 0, 370,
+       57, 1, 738,
+       61, 0, 282,
+       76, 1, 738,
+       97, 1, 738
 };
 static int parser_action_row779[] = {
-       1,
-       -1, 1, 300
+       2,
+       -1, 1, 942,
+       101, 0, 1068
 };
 static int parser_action_row780[] = {
-       1,
-       -1, 1, 311
+       24,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row781[] = {
-       2,
-       -1, 1, 313,
-       84, 0, 369
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row782[] = {
-       2,
-       -1, 1, 304,
-       83, 0, 361
+       24,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row783[] = {
-       2,
-       -1, 1, 305,
-       83, 0, 361
+       24,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row784[] = {
-       2,
-       -1, 1, 306,
-       83, 0, 361
+       4,
+       -1, 3, 783,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row785[] = {
-       2,
-       -1, 1, 307,
-       83, 0, 361
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row786[] = {
-       2,
-       -1, 1, 308,
-       83, 0, 361
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row787[] = {
-       2,
-       -1, 1, 309,
-       83, 0, 361
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row788[] = {
-       2,
-       -1, 1, 310,
-       83, 0, 361
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row789[] = {
-       2,
-       -1, 1, 315,
-       85, 0, 370
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row790[] = {
-       3,
-       -1, 1, 317,
-       91, 0, 371,
-       94, 0, 372
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row791[] = {
-       3,
-       -1, 1, 319,
-       77, 0, 373,
-       78, 0, 374
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row792[] = {
-       3,
-       -1, 1, 320,
-       77, 0, 373,
-       78, 0, 374
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row793[] = {
-       4,
-       -1, 1, 322,
-       79, 0, 375,
-       81, 0, 376,
-       82, 0, 377
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row794[] = {
-       4,
-       -1, 1, 323,
-       79, 0, 375,
-       81, 0, 376,
-       82, 0, 377
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row795[] = {
-       1,
-       -1, 1, 325
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row796[] = {
-       1,
-       -1, 1, 326
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row797[] = {
-       1,
-       -1, 1, 327
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row798[] = {
-       1,
-       -1, 1, 329
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row799[] = {
-       2,
-       -1, 1, 362,
-       55, 0, 277
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row800[] = {
-       3,
-       -1, 1, 344,
-       55, 0, 277,
-       61, 0, 216
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row801[] = {
-       2,
-       -1, 3, 800,
-       101, 0, 958
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row802[] = {
-       2,
-       -1, 1, 465,
-       100, 0, 959
+       23,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row803[] = {
-       3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 960
+       5,
+       -1, 1, 944,
+       13, 0, 1092,
+       47, 0, 886,
+       100, 0, 67,
+       101, 0, 1093
 };
 static int parser_action_row804[] = {
-       1,
-       -1, 1, 355
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row805[] = {
        1,
-       -1, 1, 290
+       -1, 1, 733
 };
 static int parser_action_row806[] = {
        1,
-       -1, 1, 163
+       -1, 1, 737
 };
 static int parser_action_row807[] = {
-       1,
-       -1, 1, 162
+       2,
+       -1, 1, 736,
+       55, 0, 370
 };
 static int parser_action_row808[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row809[] = {
        1,
-       -1, 1, 638
+       -1, 1, 486
 };
 static int parser_action_row810[] = {
-       4,
-       -1, 3, 809,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 635
 };
 static int parser_action_row811[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       32,
+       -1, 1, 944,
+       10, 0, 1100,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row812[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       3,
+       -1, 1, 1437,
+       57, 0, 1102,
+       98, 0, 813
 };
 static int parser_action_row813[] = {
-       1,
-       -1, 1, 809
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row814[] = {
-       3,
+       10,
        -1, 3, 813,
-       99, 0, 54,
-       100, 0, 967
+       6, 0, 523,
+       14, 0, 1105,
+       18, 0, 525,
+       19, 0, 1106,
+       20, 0, 1107,
+       21, 0, 1108,
+       22, 0, 1109,
+       55, 0, 1110,
+       101, 0, 531
 };
 static int parser_action_row815[] = {
        1,
-       -1, 1, 471
+       -1, 1, 1436
 };
 static int parser_action_row816[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       1,
+       -1, 1, 1197
 };
 static int parser_action_row817[] = {
+       1,
+       -1, 1, 946
+};
+static int parser_action_row818[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row818[] = {
-       2,
-       -1, 1, 418,
-       59, 0, 972
-};
 static int parser_action_row819[] = {
-       1,
-       -1, 1, 446
+       2,
+       -1, 1, 948,
+       61, 0, 281
 };
 static int parser_action_row820[] = {
-       1,
-       -1, 1, 445
+       2,
+       -1, 3, 819,
+       100, 0, 1114
 };
 static int parser_action_row821[] = {
-       1,
-       -1, 1, 444
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row822[] = {
        3,
-       -1, 1, 415,
-       55, 0, 975,
-       97, 0, 204
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row823[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row824[] = {
-       2,
-       -1, 3, 823,
-       62, 0, 978
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row825[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 156,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 800,
+       55, 0, 1119,
+       98, 0, 270
 };
 static int parser_action_row826[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 825,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row827[] = {
-       1,
-       -1, 1, 153
+       4,
+       -1, 3, 826,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row828[] = {
-       1,
-       -1, 1, 207
+       4,
+       -1, 3, 827,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row829[] = {
-       1,
-       -1, 1, 150
+       4,
+       -1, 3, 828,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row830[] = {
-       1,
-       -1, 1, 151
+       9,
+       -1, 3, 829,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       101, 0, 531
 };
 static int parser_action_row831[] = {
-       4,
-       -1, 3, 830,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row832[] = {
-       2,
-       -1, 3, 831,
-       60, 0, 983
+       1,
+       -1, 1, 801
 };
 static int parser_action_row833[] = {
-       1,
-       -1, 1, 529
+       2,
+       -1, 3, 832,
+       62, 0, 1127
 };
 static int parser_action_row834[] = {
-       25,
-       -1, 1, 468,
-       13, 0, 798,
-       47, 0, 688,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 54,
-       100, 0, 984
+       2,
+       -1, 1, 483,
+       60, 0, 439
 };
 static int parser_action_row835[] = {
        2,
-       -1, 1, 415,
-       97, 0, 204
+       -1, 3, 834,
+       16, 0, 1129
 };
 static int parser_action_row836[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 800,
+       57, 0, 1130,
+       98, 0, 270
 };
 static int parser_action_row837[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row838[] = {
-       1,
-       -1, 1, 1099
+       4,
+       -1, 3, 837,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row839[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 838,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row840[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row841[] = {
-       14,
-       -1, 1, 356,
-       55, 0, 277,
-       62, 0, 991,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 474
 };
 static int parser_action_row842[] = {
        1,
-       -1, 1, 532
+       -1, 1, 1680
 };
 static int parser_action_row843[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1686
 };
 static int parser_action_row844[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1683
 };
 static int parser_action_row845[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 844,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row846[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       1,
+       -1, 1, 1681
 };
 static int parser_action_row847[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 454,
-       28, 0, 455,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 1047,
+       62, 0, 1137
 };
 static int parser_action_row848[] = {
-       1,
-       -1, 1, 1101
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row849[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row850[] = {
        2,
-       -1, 1, 461,
-       61, 0, 216
+       -1, 3, 849,
+       76, 0, 1139
 };
 static int parser_action_row851[] = {
        2,
-       -1, 1, 81,
-       15, 0, 999
+       -1, 3, 850,
+       56, 0, 1140
 };
 static int parser_action_row852[] = {
-       2,
-       -1, 3, 851,
-       100, 0, 1001
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row853[] = {
-       4,
-       -1, 3, 852,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       1,
+       -1, 1, 1770
 };
 static int parser_action_row854[] = {
        2,
-       -1, 1, 81,
-       15, 0, 999
+       -1, 3, 853,
+       56, 0, 1142
 };
 static int parser_action_row855[] = {
        2,
-       -1, 1, 107,
-       62, 0, 1004
+       -1, 1, 780,
+       59, 0, 851
 };
 static int parser_action_row856[] = {
-       1,
-       -1, 1, 109
+       2,
+       -1, 3, 855,
+       58, 0, 846
 };
 static int parser_action_row857[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1029
 };
 static int parser_action_row858[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1030
 };
 static int parser_action_row859[] = {
-       4,
-       -1, 1, 127,
-       4, 0, 1007,
-       15, 0, 1008,
-       16, 0, 1009
+       1,
+       -1, 1, 1037
 };
 static int parser_action_row860[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1038
 };
 static int parser_action_row861[] = {
-       1,
-       -1, 1, 115
+       14,
+       -1, 1, 734,
+       55, 0, 370,
+       62, 0, 1144,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row862[] = {
-       2,
-       -1, 1, 111,
-       62, 0, 855
+       1,
+       -1, 1, 1052
 };
 static int parser_action_row863[] = {
-       1,
-       -1, 1, 474
+       15,
+       -1, 1, 738,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 1145,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row864[] = {
-       1,
-       -1, 1, 476
+       23,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 1114,
+       101, 0, 1146
 };
 static int parser_action_row865[] = {
-       22,
-       -1, 3, 864,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       100, 0, 861
+       1,
+       -1, 1, 1054
 };
 static int parser_action_row866[] = {
-       7,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       29, 0, 84,
-       57, 0, 1015,
-       98, 0, 3,
-       112, 0, 85
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row867[] = {
-       1,
-       -1, 1, 453
+       3,
+       -1, 3, 866,
+       55, 0, 462,
+       101, 0, 463
 };
 static int parser_action_row868[] = {
-       1,
-       -1, 1, 361
+       2,
+       -1, 1, 785,
+       75, 0, 1150
 };
 static int parser_action_row869[] = {
-       1,
-       -1, 1, 199
+       2,
+       -1, 3, 868,
+       58, 0, 1151
 };
 static int parser_action_row870[] = {
        3,
-       -1, 3, 869,
-       32, 0, 1025,
-       55, 0, 1026
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row871[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1772
 };
 static int parser_action_row872[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 783,
+       59, 0, 869
 };
 static int parser_action_row873[] = {
-       13,
-       -1, 1, 343,
-       62, 0, 1029,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 561
 };
 static int parser_action_row874[] = {
        1,
-       -1, 1, 190
+       -1, 1, 589
 };
 static int parser_action_row875[] = {
-       13,
-       -1, 1, 341,
-       62, 0, 1031,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row876[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 401,
+       10, 1, 117
 };
 static int parser_action_row877[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 346,
-       62, 0, 1034,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 346,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 3, 876,
+       10, 0, 1155
 };
 static int parser_action_row878[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1758
 };
 static int parser_action_row879[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 350,
-       61, 0, 216,
-       62, 0, 1039,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 350,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 3, 878,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row880[] = {
-       3,
-       -1, 1, 466,
-       13, 0, 1043,
-       100, 0, 1044
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row881[] = {
        1,
-       -1, 1, 408
+       -1, 1, 400
 };
 static int parser_action_row882[] = {
        1,
-       -1, 1, 451
+       -1, 1, 972
 };
 static int parser_action_row883[] = {
-       2,
-       -1, 3, 882,
-       56, 0, 1045
+       15,
+       -1, 1, 118,
+       6, 0, 1158,
+       11, 0, 1159,
+       12, 0, 1160,
+       13, 0, 1161,
+       14, 0, 1162,
+       17, 0, 1163,
+       19, 0, 1164,
+       20, 0, 1165,
+       21, 0, 1166,
+       22, 0, 1167,
+       39, 0, 1168,
+       40, 0, 1169,
+       42, 0, 1170,
+       101, 0, 1171
 };
 static int parser_action_row884[] = {
-       1,
-       -1, 1, 226
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       10, 1, 973,
+       99, 0, 3
 };
 static int parser_action_row885[] = {
-       1,
-       -1, 1, 245
+       2,
+       -1, 3, 884,
+       58, 0, 1177
 };
 static int parser_action_row886[] = {
-       1,
-       -1, 1, 230
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 742,
+       76, 1, 742,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 742,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row887[] = {
-       1,
-       -1, 1, 249
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row888[] = {
-       1,
-       -1, 1, 229
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 716,
+       61, 0, 282,
+       62, 0, 1181,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 716,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 716,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row889[] = {
-       1,
-       -1, 1, 248
+       2,
+       -1, 3, 888,
+       102, 0, 1185
 };
 static int parser_action_row890[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 941,
+       13, 0, 1186,
+       101, 0, 1187
 };
 static int parser_action_row891[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 943,
+       13, 0, 1188,
+       100, 0, 67,
+       101, 0, 1189
 };
 static int parser_action_row892[] = {
-       1,
-       -1, 1, 447
+       4,
+       -1, 1, 944,
+       13, 0, 1191,
+       100, 0, 67,
+       101, 0, 1192
 };
 static int parser_action_row893[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 569
 };
 static int parser_action_row894[] = {
-       3,
-       -1, 3, 893,
-       99, 0, 54,
-       100, 0, 1049
+       1,
+       -1, 1, 597
 };
 static int parser_action_row895[] = {
-       2,
-       -1, 3, 894,
-       101, 0, 1052
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row896[] = {
        1,
-       -1, 1, 379
+       -1, 1, 789
 };
 static int parser_action_row897[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 790
 };
 static int parser_action_row898[] = {
        1,
-       -1, 1, 1108
+       -1, 1, 544
 };
 static int parser_action_row899[] = {
-       2,
-       -1, 1, 455,
-       59, 0, 896
+       1,
+       -1, 1, 572
 };
 static int parser_action_row900[] = {
-       1,
-       -1, 1, 719
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       56, 0, 1197,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 676,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row901[] = {
        1,
-       -1, 1, 781
+       -1, 1, 564
 };
 static int parser_action_row902[] = {
-       3,
-       -1, 3, 901,
-       32, 0, 1055,
-       55, 0, 1056
+       1,
+       -1, 1, 592
 };
 static int parser_action_row903[] = {
-       1,
-       -1, 1, 763
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row904[] = {
-       1,
-       -1, 1, 761
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row905[] = {
-       2,
-       -1, 1, 766,
-       55, 0, 277
+       1,
+       -1, 1, 568
 };
 static int parser_action_row906[] = {
-       3,
-       -1, 1, 770,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 596
 };
 static int parser_action_row907[] = {
-       2,
-       -1, 1, 466,
-       100, 0, 1059
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row908[] = {
-       1,
-       -1, 1, 1000
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row909[] = {
        1,
-       -1, 1, 999
+       -1, 1, 533
 };
 static int parser_action_row910[] = {
-       1,
-       -1, 1, 171
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row911[] = {
-       1,
-       -1, 1, 212
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row912[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       13,
+       -1, 1, 735,
+       62, 0, 1205,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row913[] = {
        1,
-       -1, 1, 274
+       -1, 1, 520
 };
 static int parser_action_row914[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 364,
-       76, 1, 364,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 465
 };
 static int parser_action_row915[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1062,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       8,
+       -1, 3, 914,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 721,
+       18, 0, 43
 };
 static int parser_action_row916[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       8,
+       -1, 3, 915,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 725,
+       18, 0, 43
 };
 static int parser_action_row917[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       8,
+       -1, 3, 916,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 729,
+       18, 0, 43
 };
 static int parser_action_row918[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       8,
+       -1, 3, 917,
+       5, 0, 33,
+       6, 0, 34,
+       7, 0, 35,
+       8, 0, 36,
+       9, 0, 37,
+       11, 0, 733,
+       18, 0, 43
 };
 static int parser_action_row919[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1062,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 939,
+       61, 0, 282
 };
 static int parser_action_row920[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 919,
+       101, 0, 1207
 };
 static int parser_action_row921[] = {
-       26,
-       -1, 1, 175,
-       13, 0, 170,
-       23, 0, 171,
-       25, 1, 917,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       8,
+       -1, 3, 920,
+       6, 0, 523,
+       18, 0, 525,
+       19, 0, 1208,
+       20, 0, 1209,
+       21, 0, 1210,
+       22, 0, 1211,
+       101, 0, 531
 };
 static int parser_action_row922[] = {
        3,
-       -1, 1, 181,
-       25, 1, 923,
-       50, 0, 197
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row923[] = {
        3,
-       -1, 1, 178,
-       25, 1, 920,
-       50, 0, 197
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row924[] = {
-       2,
-       -1, 1, 180,
-       25, 1, 922
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row925[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 200,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
-};
-static int parser_action_row926[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row926[] = {
+       1,
+       -1, 1, 402
+};
 static int parser_action_row927[] = {
        2,
-       -1, 3, 926,
-       12, 0, 1080
+       -1, 1, 821,
+       59, 0, 1217
 };
 static int parser_action_row928[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1220,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row929[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 352,
-       61, 0, 216,
-       62, 0, 217,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 352,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       10, 1, 407,
+       99, 0, 3
 };
 static int parser_action_row930[] = {
        1,
-       -1, 1, 267
+       -1, 1, 16
 };
 static int parser_action_row931[] = {
-       2,
-       -1, 1, 173,
-       25, 1, 915
+       1,
+       -1, 1, 26
 };
 static int parser_action_row932[] = {
        2,
-       -1, 1, 174,
-       25, 1, 916
+       -1, 1, 443,
+       74, 0, 1229
 };
 static int parser_action_row933[] = {
-       1,
-       -1, 1, 272
+       2,
+       -1, 1, 799,
+       60, 0, 139
 };
 static int parser_action_row934[] = {
-       3,
-       -1, 3, 933,
-       57, 0, 244,
-       76, 0, 1083
+       1,
+       -1, 1, 442
 };
 static int parser_action_row935[] = {
-       3,
-       -1, 3, 934,
-       42, 0, 1084,
-       101, 0, 255
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       60, 0, 139
 };
 static int parser_action_row936[] = {
        3,
-       -1, 1, 465,
-       13, 0, 1085,
-       100, 0, 1086
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row937[] = {
-       32,
-       -1, 1, 468,
-       10, 0, 912,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       25, 0, 1087,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1762
 };
 static int parser_action_row938[] = {
-       2,
-       -1, 3, 937,
-       25, 0, 1091
+       1,
+       -1, 1, 438
 };
 static int parser_action_row939[] = {
-       1,
-       -1, 1, 925
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       59, 0, 935
 };
 static int parser_action_row940[] = {
        1,
-       -1, 1, 926
+       -1, 1, 620
 };
 static int parser_action_row941[] = {
-       1,
-       -1, 1, 928
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row942[] = {
        1,
-       -1, 1, 927
+       -1, 1, 773
 };
 static int parser_action_row943[] = {
-       1,
-       -1, 1, 929
+       25,
+       -1, 3, 942,
+       42, 0, 1239,
+       48, 0, 537,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 517,
+       101, 0, 159
 };
 static int parser_action_row944[] = {
-       1,
-       -1, 1, 930
+       4,
+       -1, 1, 405,
+       0, 1, 1027,
+       1, 1, 1027,
+       99, 1, 1027
 };
 static int parser_action_row945[] = {
-       1,
-       -1, 1, 931
+       9,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       4, 1, 407,
+       10, 1, 407,
+       16, 1, 407,
+       29, 1, 407,
+       99, 0, 3,
+       113, 1, 407
 };
 static int parser_action_row946[] = {
-       4,
-       -1, 1, 467,
-       13, 0, 1092,
-       99, 0, 54,
-       100, 0, 1093
+       2,
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row947[] = {
-       1,
-       -1, 1, 278
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row948[] = {
-       2,
+       3,
        -1, 3, 947,
-       50, 0, 197
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row949[] = {
-       2,
-       -1, 3, 948,
-       56, 0, 1096
+       1,
+       -1, 1, 1007
 };
 static int parser_action_row950[] = {
-       1,
-       -1, 1, 280
+       32,
+       -1, 1, 944,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row951[] = {
-       2,
-       -1, 3, 950,
-       50, 0, 197
+       1,
+       -1, 1, 924
 };
 static int parser_action_row952[] = {
-       3,
+       2,
        -1, 3, 951,
-       55, 0, 341,
-       100, 0, 342
+       56, 0, 1254
 };
 static int parser_action_row953[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 952,
+       24, 0, 1255
 };
 static int parser_action_row954[] = {
-       1,
-       -1, 1, 460
-};
-static int parser_action_row955[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row955[] = {
+       1,
+       -1, 1, 1342
+};
 static int parser_action_row956[] = {
        2,
        -1, 3, 955,
-       101, 0, 1101
+       76, 0, 953
 };
 static int parser_action_row957[] = {
-       1,
-       -1, 1, 299
+       5,
+       -1, 1, 944,
+       13, 0, 990,
+       47, 0, 991,
+       100, 0, 67,
+       101, 0, 992
 };
 static int parser_action_row958[] = {
-       1,
-       -1, 1, 343
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row959[] = {
-       1,
-       -1, 1, 341
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row960[] = {
-       2,
-       -1, 1, 346,
-       55, 0, 277
+       1,
+       -1, 1, 760
 };
 static int parser_action_row961[] = {
-       3,
-       -1, 1, 350,
-       55, 0, 277,
-       61, 0, 216
+       2,
+       -1, 1, 930,
+       59, 0, 1260
 };
 static int parser_action_row962[] = {
-       2,
-       -1, 1, 466,
-       100, 0, 1104
+       9,
+       -1, 1, 923,
+       0, 1, 925,
+       1, 1, 925,
+       10, 1, 925,
+       25, 1, 925,
+       56, 1, 925,
+       59, 1, 925,
+       99, 1, 925,
+       115, 1, 925
 };
 static int parser_action_row963[] = {
        4,
-       -1, 3, 962,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       -1, 1, 1365,
+       57, 1, 1393,
+       76, 1, 1393,
+       97, 1, 1393
 };
 static int parser_action_row964[] = {
-       2,
-       -1, 1, 156,
-       59, 0, 1106
+       5,
+       -1, 1, 944,
+       13, 0, 990,
+       47, 0, 991,
+       100, 0, 67,
+       101, 0, 1263
 };
 static int parser_action_row965[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row966[] = {
-       2,
-       -1, 1, 30,
-       14, 0, 32
+       4,
+       -1, 1, 1369,
+       57, 1, 1397,
+       76, 1, 1397,
+       97, 1, 1397
 };
 static int parser_action_row967[] = {
-       4,
-       -1, 3, 966,
-       6, 0, 818,
-       18, 0, 819,
-       100, 0, 820
+       5,
+       -1, 1, 1368,
+       55, 0, 370,
+       57, 1, 1396,
+       76, 1, 1396,
+       97, 1, 1396
 };
 static int parser_action_row968[] = {
-       3,
-       -1, 1, 367,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 1304
 };
 static int parser_action_row969[] = {
-       2,
-       -1, 3, 968,
-       100, 0, 1113
+       22,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row970[] = {
-       3,
-       -1, 3, 969,
-       99, 0, 54,
-       100, 0, 1114
+       1,
+       -1, 1, 1303
 };
 static int parser_action_row971[] = {
-       4,
-       -1, 3, 970,
-       6, 0, 818,
-       18, 0, 819,
-       100, 0, 820
+       1,
+       -1, 1, 1306
 };
 static int parser_action_row972[] = {
-       2,
-       -1, 3, 971,
-       56, 0, 1117
+       1,
+       -1, 1, 1317
 };
 static int parser_action_row973[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 1319,
+       84, 0, 411
 };
 static int parser_action_row974[] = {
-       1,
-       -1, 1, 1104
+       2,
+       -1, 1, 1310,
+       83, 0, 403
 };
 static int parser_action_row975[] = {
        2,
-       -1, 1, 419,
-       59, 0, 972
+       -1, 1, 1311,
+       83, 0, 403
 };
 static int parser_action_row976[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 1312,
+       83, 0, 403
 };
 static int parser_action_row977[] = {
-       1,
-       -1, 1, 416
+       2,
+       -1, 1, 1313,
+       83, 0, 403
 };
 static int parser_action_row978[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 1314,
+       83, 0, 403
 };
 static int parser_action_row979[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 1315,
+       83, 0, 403
 };
 static int parser_action_row980[] = {
-       1,
-       -1, 1, 285
+       2,
+       -1, 1, 1316,
+       83, 0, 403
 };
 static int parser_action_row981[] = {
        2,
-       -1, 3, 980,
-       50, 0, 197
+       -1, 1, 1321,
+       85, 0, 412
 };
 static int parser_action_row982[] = {
-       4,
-       -1, 3, 981,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       3,
+       -1, 1, 1323,
+       91, 0, 413,
+       94, 0, 414
 };
 static int parser_action_row983[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 1325,
+       77, 0, 415,
+       78, 0, 416
 };
 static int parser_action_row984[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 1326,
+       77, 0, 415,
+       78, 0, 416
 };
 static int parser_action_row985[] = {
-       15,
-       -1, 1, 344,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1127,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       4,
+       -1, 1, 1328,
+       79, 0, 417,
+       81, 0, 418,
+       82, 0, 419
 };
 static int parser_action_row986[] = {
-       22,
-       -1, 1, 465,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
+       4,
+       -1, 1, 1329,
+       79, 0, 417,
        81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       100, 0, 1128
+       82, 0, 419
 };
 static int parser_action_row987[] = {
        1,
-       -1, 1, 441
+       -1, 1, 1331
 };
 static int parser_action_row988[] = {
-       23,
-       -1, 1, 467,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 54,
-       100, 0, 1129
+       1,
+       -1, 1, 1332
 };
 static int parser_action_row989[] = {
        1,
-       -1, 1, 394
+       -1, 1, 1333
 };
 static int parser_action_row990[] = {
        1,
-       -1, 1, 396
+       -1, 1, 1335
 };
 static int parser_action_row991[] = {
-       1,
-       -1, 1, 393
+       2,
+       -1, 1, 1402,
+       55, 0, 370
 };
 static int parser_action_row992[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row993[] = {
-       2,
-       -1, 3, 992,
-       24, 0, 1131
+       3,
+       -1, 1, 1376,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row994[] = {
-       3,
+       2,
        -1, 3, 993,
-       16, 0, 1132,
-       59, 0, 769
+       102, 0, 1272
 };
 static int parser_action_row995[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 1133,
-       23, 0, 1134,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 1, 941,
+       101, 0, 1273
 };
 static int parser_action_row996[] = {
-       1,
-       -1, 1, 392
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1274
 };
 static int parser_action_row997[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 1, 944,
+       13, 0, 1276,
+       100, 0, 67,
+       101, 0, 1277
 };
 static int parser_action_row998[] = {
        1,
-       -1, 1, 399
+       -1, 1, 1395
 };
 static int parser_action_row999[] = {
-       2,
+       4,
        -1, 3, 998,
-       100, 0, 1172
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1000[] = {
-       5,
-       -1, 1, 30,
-       0, 0, 88,
-       1, 0, 89,
-       14, 0, 32,
-       98, 0, 90
+       1,
+       -1, 1, 41
 };
 static int parser_action_row1001[] = {
        4,
        -1, 3, 1000,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1002[] = {
-       2,
-       -1, 1, 462,
-       61, 0, 216
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1003[] = {
-       1,
-       -1, 1, 18
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 1284
 };
 static int parser_action_row1004[] = {
-       4,
+       3,
        -1, 3, 1003,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1005[] = {
        1,
-       -1, 1, 110
+       -1, 1, 1002
 };
 static int parser_action_row1006[] = {
-       2,
-       -1, 1, 118,
-       100, 0, 1178
+       3,
+       -1, 3, 1005,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1007[] = {
        4,
        -1, 3, 1006,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       10, 0, 1288,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1008[] = {
-       3,
-       -1, 1, 497,
+       5,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1009[] = {
-       5,
-       -1, 1, 30,
-       0, 0, 88,
-       1, 0, 89,
-       14, 0, 32,
-       98, 0, 90
+       3,
+       -1, 3, 1008,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1010[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 1009,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1011[] = {
-       3,
-       -1, 1, 127,
-       4, 0, 1007,
-       16, 0, 1186
+       4,
+       -1, 3, 1010,
+       10, 0, 1293,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1012[] = {
-       3,
-       -1, 3, 1011,
-       29, 0, 84,
-       112, 0, 85
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1013[] = {
-       1,
-       -1, 1, 503
+       3,
+       -1, 3, 1012,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1014[] = {
-       1,
-       -1, 1, 114
+       3,
+       -1, 3, 1013,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1015[] = {
-       1,
-       -1, 1, 475
+       4,
+       -1, 3, 1014,
+       10, 0, 1298,
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1016[] = {
-       3,
-       -1, 1, 497,
+       5,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1017[] = {
-       2,
-       -1, 1, 78,
-       10, 1, 46
+       3,
+       -1, 3, 1016,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1018[] = {
-       2,
+       3,
        -1, 3, 1017,
-       10, 0, 1190
+       61, 0, 351,
+       101, 0, 352
 };
 static int parser_action_row1019[] = {
-       1,
-       -1, 1, 1086
-};
-static int parser_action_row1020[] = {
        4,
-       -1, 3, 1019,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       -1, 3, 1018,
+       10, 0, 1303,
+       61, 0, 351,
+       101, 0, 352
 };
-static int parser_action_row1021[] = {
-       4,
-       -1, 1, 495,
+static int parser_action_row1020[] = {
+       5,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 3
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row1021[] = {
+       3,
+       -1, 3, 1020,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1022[] = {
-       1,
-       -1, 1, 77
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1023[] = {
-       1,
-       -1, 1, 496
+       2,
+       -1, 3, 1022,
+       10, 0, 1308
 };
 static int parser_action_row1024[] = {
-       5,
-       -1, 1, 30,
-       6, 0, 1193,
-       10, 1, 47,
-       14, 0, 32,
-       100, 0, 1194
-};
-static int parser_action_row1025[] = {
-       5,
-       -1, 1, 495,
+       4,
+       -1, 1, 971,
        0, 0, 1,
        1, 0, 2,
-       10, 1, 497,
-       98, 0, 3
+       99, 0, 3
+};
+static int parser_action_row1025[] = {
+       1,
+       -1, 1, 1673
 };
 static int parser_action_row1026[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       32,
+       -1, 1, 944,
+       10, 0, 1310,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1027[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 611
 };
 static int parser_action_row1028[] = {
        1,
-       -1, 1, 217
+       -1, 1, 490
 };
 static int parser_action_row1029[] = {
-       1,
-       -1, 1, 236
+       33,
+       -1, 1, 944,
+       10, 0, 1312,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       54, 1, 489,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1030[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 482
 };
 static int parser_action_row1031[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1032[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1033[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1034[] = {
-       1,
-       -1, 1, 201
+       4,
+       -1, 3, 1033,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1035[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1036[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1318
 };
 static int parser_action_row1037[] = {
-       13,
-       -1, 1, 345,
-       62, 0, 1209,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1322,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1038[] = {
-       1,
-       -1, 1, 191
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1039[] = {
-       1,
-       -1, 1, 203
+       4,
+       -1, 3, 1038,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1040[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1041[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1328
 };
 static int parser_action_row1042[] = {
-       13,
-       -1, 1, 349,
-       62, 0, 1213,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1332,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1043[] = {
-       1,
-       -1, 1, 193
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1044[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 3, 1043,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1045[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 348,
-       62, 0, 1216,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 348,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1046[] = {
-       1,
-       -1, 1, 449
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1338
 };
 static int parser_action_row1047[] = {
-       1,
-       -1, 1, 228
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1342,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1048[] = {
-       1,
-       -1, 1, 247
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1049[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1048,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1050[] = {
-       3,
-       -1, 1, 787,
-       55, 0, 277,
-       61, 0, 216
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1051[] = {
-       2,
-       -1, 3, 1050,
-       100, 0, 1222
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1348
 };
 static int parser_action_row1052[] = {
-       3,
-       -1, 3, 1051,
-       99, 0, 54,
-       100, 0, 1223
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1352,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1053[] = {
-       3,
-       -1, 1, 758,
-       57, 1, 761,
-       76, 1, 761
+       36,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       25, 0, 1358,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1054[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 522,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 217,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1055[] = {
-       1,
-       -1, 1, 1109
+       32,
+       -1, 1, 944,
+       10, 0, 1312,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1056[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       59, 0, 765
 };
 static int parser_action_row1057[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 217,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1058[] = {
-       1,
-       -1, 1, 765
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1059[] = {
-       1,
-       -1, 1, 769
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1060[] = {
        2,
-       -1, 1, 768,
-       55, 0, 277
+       -1, 3, 1059,
+       101, 0, 1395
 };
 static int parser_action_row1061[] = {
-       1,
-       -1, 1, 213
+       2,
+       -1, 3, 1060,
+       24, 0, 1396
 };
 static int parser_action_row1062[] = {
-       2,
-       -1, 1, 200,
-       25, 1, 942
+       1,
+       -1, 1, 682
 };
 static int parser_action_row1063[] = {
-       3,
-       -1, 1, 164,
-       25, 1, 913,
-       50, 1, 1001
+       5,
+       -1, 1, 944,
+       13, 0, 1092,
+       47, 0, 886,
+       100, 0, 67,
+       101, 0, 1093
 };
 static int parser_action_row1064[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 1229,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1065[] = {
-       1,
-       -1, 1, 951
+       5,
+       -1, 1, 944,
+       13, 0, 1092,
+       47, 0, 886,
+       100, 0, 67,
+       101, 0, 1399
 };
 static int parser_action_row1066[] = {
-       1,
-       -1, 1, 914
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1067[] = {
-       2,
-       -1, 3, 1066,
-       50, 0, 197
+       4,
+       -1, 1, 705,
+       57, 1, 733,
+       76, 1, 733,
+       97, 1, 733
 };
 static int parser_action_row1068[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 709,
+       57, 1, 737,
+       76, 1, 737,
+       97, 1, 737
 };
 static int parser_action_row1069[] = {
-       1,
-       -1, 1, 269
+       5,
+       -1, 1, 708,
+       55, 0, 370,
+       57, 1, 736,
+       76, 1, 736,
+       97, 1, 736
 };
 static int parser_action_row1070[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 644
 };
 static int parser_action_row1071[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 1229,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       24,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1072[] = {
        1,
-       -1, 1, 955
+       -1, 1, 643
 };
 static int parser_action_row1073[] = {
-       2,
-       -1, 3, 1072,
-       50, 0, 197
+       1,
+       -1, 1, 646
 };
 static int parser_action_row1074[] = {
-       3,
-       -1, 3, 1073,
-       55, 0, 341,
-       100, 0, 342
+       1,
+       -1, 1, 657
 };
 static int parser_action_row1075[] = {
        2,
-       -1, 1, 176,
-       25, 1, 918
+       -1, 1, 659,
+       84, 0, 494
 };
 static int parser_action_row1076[] = {
        2,
-       -1, 1, 182,
-       25, 1, 924
+       -1, 1, 650,
+       83, 0, 486
 };
 static int parser_action_row1077[] = {
        2,
-       -1, 1, 179,
-       25, 1, 921
+       -1, 1, 651,
+       83, 0, 486
 };
 static int parser_action_row1078[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 652,
+       83, 0, 486
 };
 static int parser_action_row1079[] = {
        2,
-       -1, 1, 291,
-       25, 0, 1238
+       -1, 1, 653,
+       83, 0, 486
 };
 static int parser_action_row1080[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 400,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 654,
+       83, 0, 486
 };
 static int parser_action_row1081[] = {
-       4,
-       -1, 3, 1080,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       2,
+       -1, 1, 655,
+       83, 0, 486
 };
 static int parser_action_row1082[] = {
        2,
-       -1, 1, 177,
-       25, 1, 919
+       -1, 1, 656,
+       83, 0, 486
 };
 static int parser_action_row1083[] = {
        2,
-       -1, 1, 194,
-       25, 1, 936
+       -1, 1, 661,
+       85, 0, 495
 };
 static int parser_action_row1084[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 663,
+       91, 0, 496,
+       94, 0, 497
 };
 static int parser_action_row1085[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 360,
-       76, 1, 360,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 665,
+       77, 0, 498,
+       78, 0, 499
 };
 static int parser_action_row1086[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 666,
+       77, 0, 498,
+       78, 0, 499
 };
 static int parser_action_row1087[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 354,
-       62, 0, 497,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 354,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 1, 668,
+       79, 0, 500,
+       81, 0, 501,
+       82, 0, 502
 };
 static int parser_action_row1088[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 669,
+       79, 0, 500,
+       81, 0, 501,
+       82, 0, 502
 };
 static int parser_action_row1089[] = {
-       3,
-       -1, 3, 1088,
-       10, 0, 912,
-       25, 0, 1246
+       1,
+       -1, 1, 671
 };
 static int parser_action_row1090[] = {
-       4,
-       -1, 3, 1089,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 672
 };
 static int parser_action_row1091[] = {
        1,
-       -1, 1, 273
+       -1, 1, 673
 };
 static int parser_action_row1092[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 675
 };
 static int parser_action_row1093[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       2,
+       -1, 1, 742,
+       55, 0, 370
 };
 static int parser_action_row1094[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 358,
-       61, 0, 216,
-       62, 0, 502,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 358,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 716,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1095[] = {
-       3,
-       -1, 1, 466,
-       13, 0, 1252,
-       100, 0, 1253
+       2,
+       -1, 3, 1094,
+       102, 0, 1406
 };
 static int parser_action_row1096[] = {
-       1,
-       -1, 1, 277
+       2,
+       -1, 1, 941,
+       101, 0, 1407
 };
 static int parser_action_row1097[] = {
-       1,
-       -1, 1, 457
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1408
 };
 static int parser_action_row1098[] = {
-       1,
-       -1, 1, 279
+       4,
+       -1, 1, 944,
+       13, 0, 1410,
+       100, 0, 67,
+       101, 0, 1411
 };
 static int parser_action_row1099[] = {
        1,
-       -1, 1, 282
+       -1, 1, 735
 };
 static int parser_action_row1100[] = {
        1,
-       -1, 1, 283
+       -1, 1, 636
 };
 static int parser_action_row1101[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 485
 };
 static int parser_action_row1102[] = {
-       3,
-       -1, 1, 338,
-       57, 1, 341,
-       76, 1, 341
+       1,
+       -1, 1, 484
 };
 static int parser_action_row1103[] = {
-       1,
-       -1, 1, 345
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1104[] = {
        1,
-       -1, 1, 349
+       -1, 1, 1198
 };
 static int parser_action_row1105[] = {
-       2,
-       -1, 1, 348,
-       55, 0, 277
+       4,
+       -1, 3, 1104,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1106[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       8,
+       -1, 3, 1105,
+       6, 0, 523,
+       18, 0, 525,
+       19, 0, 1418,
+       20, 0, 1419,
+       21, 0, 1420,
+       22, 0, 1421,
+       101, 0, 531
 };
 static int parser_action_row1107[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1108[] = {
-       1,
-       -1, 1, 1094
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1109[] = {
-       2,
-       -1, 1, 157,
-       59, 0, 1106
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1110[] = {
-       2,
-       -1, 3, 1109,
-       58, 0, 1259
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1111[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1112[] = {
        2,
-       -1, 1, 812,
-       97, 0, 607
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1113[] = {
        1,
-       -1, 1, 366
+       -1, 1, 1434
 };
 static int parser_action_row1114[] = {
-       2,
-       -1, 1, 369,
-       55, 0, 277
+       3,
+       -1, 3, 1113,
+       100, 0, 67,
+       101, 0, 1429
 };
 static int parser_action_row1115[] = {
-       3,
-       -1, 1, 373,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 947
 };
 static int parser_action_row1116[] = {
-       2,
+       4,
        -1, 3, 1115,
-       100, 0, 1264
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1117[] = {
-       12,
-       -1, 1, 415,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       55, 0, 1265,
-       97, 0, 204,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 3, 1116,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1118[] = {
-       1,
-       -1, 1, 413
+       4,
+       -1, 3, 1117,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1119[] = {
-       2,
-       -1, 1, 30,
-       14, 0, 32
+       4,
+       -1, 3, 1118,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1120[] = {
-       1,
-       -1, 1, 1105
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1121[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 806
 };
 static int parser_action_row1122[] = {
-       1,
-       -1, 1, 286
+       3,
+       -1, 1, 800,
+       55, 0, 1437,
+       98, 0, 270
 };
 static int parser_action_row1123[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 800,
+       55, 0, 1439,
+       98, 0, 270
 };
 static int parser_action_row1124[] = {
-       1,
-       -1, 1, 284
+       3,
+       -1, 1, 800,
+       55, 0, 1441,
+       98, 0, 270
 };
 static int parser_action_row1125[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 800,
+       55, 0, 1443,
+       98, 0, 270
 };
 static int parser_action_row1126[] = {
-       2,
-       -1, 3, 1125,
-       58, 0, 1274
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1127[] = {
-       1,
-       -1, 1, 1021
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1128[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1129[] = {
-       14,
-       -1, 1, 346,
-       55, 0, 277,
-       62, 0, 1275,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       2,
+       -1, 3, 1128,
+       62, 0, 1449
 };
 static int parser_action_row1130[] = {
-       15,
-       -1, 1, 350,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1276,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 217,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1131[] = {
-       22,
-       -1, 1, 466,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       100, 0, 1277
-};
-static int parser_action_row1132[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
+static int parser_action_row1132[] = {
+       1,
+       -1, 1, 475
+};
 static int parser_action_row1133[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 454,
-       28, 0, 455,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 535
 };
 static int parser_action_row1134[] = {
-       2,
-       -1, 1, 609,
-       55, 0, 277
+       1,
+       -1, 1, 472
 };
 static int parser_action_row1135[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 473
 };
 static int parser_action_row1136[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1135,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1137[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1136,
+       60, 0, 1454
 };
 static int parser_action_row1138[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1050
 };
 static int parser_action_row1139[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       25,
+       -1, 1, 944,
+       13, 0, 1092,
+       47, 0, 886,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 1455
 };
 static int parser_action_row1140[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1141[] = {
        2,
-       -1, 1, 415,
-       97, 0, 204
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1142[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1143[] = {
-       15,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1289,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       55, 0, 52,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1144[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 1771
 };
 static int parser_action_row1145[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1146[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1147[] = {
-       3,
-       -1, 1, 591,
-       55, 0, 277,
-       61, 0, 216
+       14,
+       -1, 1, 736,
+       55, 0, 370,
+       62, 0, 1463,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1148[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       1,
+       -1, 1, 1053
 };
 static int parser_action_row1149[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1150[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1151[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1152[] = {
-       1,
-       -1, 1, 633
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1153[] = {
-       1,
-       -1, 1, 632
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 588,
+       28, 0, 589,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1154[] = {
-       3,
-       -1, 3, 1153,
-       42, 0, 1300,
-       101, 0, 1301
+       1,
+       -1, 1, 1773
 };
 static int parser_action_row1155[] = {
        2,
-       -1, 1, 465,
-       100, 0, 1302
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1156[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 54
 };
 static int parser_action_row1157[] = {
-       4,
-       -1, 1, 539,
-       30, 0, 1304,
-       31, 0, 1305,
-       33, 0, 1306
+       1,
+       -1, 1, 119
 };
 static int parser_action_row1158[] = {
-       1,
-       -1, 1, 541
+       2,
+       -1, 3, 1157,
+       10, 0, 1473
 };
 static int parser_action_row1159[] = {
        1,
-       -1, 1, 546
+       -1, 1, 1746
 };
 static int parser_action_row1160[] = {
-       10,
-       -1, 1, 548,
-       40, 0, 1307,
-       83, 0, 1308,
-       87, 0, 1309,
-       88, 0, 1310,
-       89, 0, 1311,
-       90, 0, 1312,
-       92, 0, 1313,
-       93, 0, 1314,
-       95, 0, 1315
+       23,
+       -1, 3, 1159,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1161[] = {
-       2,
-       -1, 1, 557,
-       84, 0, 1316
+       3,
+       -1, 3, 1160,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1162[] = {
-       2,
-       -1, 1, 559,
-       85, 0, 1317
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1163[] = {
-       3,
-       -1, 1, 561,
-       91, 0, 1318,
-       94, 0, 1319
+       12,
+       -1, 3, 1162,
+       11, 0, 1478,
+       12, 0, 1479,
+       13, 0, 1480,
+       17, 0, 1481,
+       19, 0, 1482,
+       20, 0, 1483,
+       21, 0, 1484,
+       22, 0, 1485,
+       39, 0, 1486,
+       40, 0, 1487,
+       42, 0, 1488
 };
 static int parser_action_row1164[] = {
-       3,
-       -1, 1, 563,
-       77, 0, 1320,
-       78, 0, 1321
+       2,
+       -1, 3, 1163,
+       101, 0, 1489
 };
 static int parser_action_row1165[] = {
-       4,
-       -1, 1, 566,
-       79, 0, 1322,
-       81, 0, 1323,
-       82, 0, 1324
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1166[] = {
-       1,
-       -1, 1, 569
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1167[] = {
-       2,
-       -1, 1, 573,
-       80, 0, 1325
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1168[] = {
-       1,
-       -1, 1, 575
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1169[] = {
-       2,
-       -1, 1, 580,
-       76, 0, 1326
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1170[] = {
-       1,
-       -1, 1, 585
+       3,
+       -1, 3, 1169,
+       15, 0, 1496,
+       16, 0, 1497
 };
 static int parser_action_row1171[] = {
        3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 1327
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1172[] = {
        1,
-       -1, 1, 400
+       -1, 1, 1745
 };
 static int parser_action_row1173[] = {
-       2,
-       -1, 1, 463,
-       61, 0, 216
+       57,
+       -1, 1, 905,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 1506,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 1511,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1174[] = {
-       2,
-       -1, 3, 1173,
-       100, 0, 1329
+       1,
+       -1, 1, 401
 };
 static int parser_action_row1175[] = {
        1,
-       -1, 1, 79
+       -1, 1, 1759
 };
 static int parser_action_row1176[] = {
-       4,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       15,
+       -1, 3, 1175,
+       6, 0, 1158,
+       11, 0, 1159,
+       12, 0, 1160,
+       13, 0, 1161,
+       14, 0, 1162,
+       17, 0, 1163,
+       19, 0, 1164,
+       20, 0, 1165,
+       21, 0, 1166,
+       22, 0, 1167,
+       39, 0, 1168,
+       40, 0, 1169,
+       42, 0, 1170,
+       101, 0, 1171
 };
 static int parser_action_row1177[] = {
        1,
-       -1, 1, 16
+       -1, 1, 116
 };
 static int parser_action_row1178[] = {
        1,
-       -1, 1, 17
+       -1, 1, 929
 };
 static int parser_action_row1179[] = {
-       3,
-       -1, 1, 415,
-       60, 0, 857,
-       97, 0, 204
+       1,
+       -1, 1, 741
 };
 static int parser_action_row1180[] = {
-       2,
-       -1, 3, 1179,
-       56, 0, 1336
+       1,
+       -1, 1, 523
 };
 static int parser_action_row1181[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       59, 0, 1337
+       3,
+       -1, 3, 1180,
+       32, 0, 1531,
+       55, 0, 1532
 };
 static int parser_action_row1182[] = {
-       1,
-       -1, 1, 159
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1183[] = {
        25,
-       -1, 3, 1182,
-       42, 0, 1341,
-       48, 0, 403,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 391,
-       100, 0, 679
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1184[] = {
-       4,
-       -1, 1, 82,
-       0, 1, 506,
-       1, 1, 506,
-       98, 1, 506
+       13,
+       -1, 1, 715,
+       62, 0, 1535,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1185[] = {
-       4,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 510
 };
 static int parser_action_row1186[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       13,
+       -1, 1, 712,
+       62, 0, 1537,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1187[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1188[] = {
-       3,
-       -1, 3, 1187,
-       29, 0, 84,
-       112, 0, 85
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 718,
+       62, 0, 1540,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 718,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 718,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1189[] = {
-       1,
-       -1, 1, 504
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1190[] = {
-       2,
-       -1, 1, 40,
-       99, 0, 1354
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 722,
+       61, 0, 282,
+       62, 0, 1545,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 722,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 722,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1191[] = {
-       1,
-       -1, 1, 26
+       3,
+       -1, 1, 942,
+       13, 0, 1549,
+       101, 0, 1550
 };
 static int parser_action_row1192[] = {
-       1,
-       -1, 1, 48
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 744,
+       76, 1, 744,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 744,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1193[] = {
-       2,
-       -1, 3, 1192,
-       10, 0, 1357
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 724,
+       61, 0, 282,
+       62, 0, 1553,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 724,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 724,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1194[] = {
-       1,
-       -1, 1, 1074
+       2,
+       -1, 3, 1193,
+       102, 0, 1557
 };
 static int parser_action_row1195[] = {
-       1,
-       -1, 1, 1073
+       3,
+       -1, 1, 941,
+       13, 0, 1558,
+       101, 0, 1559
 };
 static int parser_action_row1196[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       4,
+       -1, 1, 943,
+       13, 0, 1560,
+       100, 0, 67,
+       101, 0, 1561
 };
 static int parser_action_row1197[] = {
-       56,
-       -1, 1, 430,
-       13, 0, 116,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 117,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 118,
-       34, 0, 1359,
-       35, 0, 1360,
-       36, 0, 1361,
-       37, 0, 1362,
-       38, 0, 43,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       48, 0, 403,
-       49, 0, 125,
-       51, 0, 49,
-       52, 0, 1363,
-       53, 0, 1364,
-       55, 0, 1365,
-       57, 0, 638,
-       77, 0, 1366,
-       78, 0, 1367,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 1368,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 1369,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 793
 };
 static int parser_action_row1198[] = {
        1,
-       -1, 1, 78
+       -1, 1, 927
 };
 static int parser_action_row1199[] = {
-       1,
-       -1, 1, 1087
+       2,
+       -1, 3, 1198,
+       56, 0, 1563
 };
 static int parser_action_row1200[] = {
-       4,
-       -1, 1, 30,
-       6, 0, 1193,
-       14, 0, 32,
-       100, 0, 1194
+       1,
+       -1, 1, 563
 };
 static int parser_action_row1201[] = {
        1,
-       -1, 1, 45
+       -1, 1, 591
 };
 static int parser_action_row1202[] = {
-       2,
-       -1, 3, 1201,
-       46, 0, 1389
+       1,
+       -1, 1, 567
 };
 static int parser_action_row1203[] = {
-       5,
-       -1, 3, 1202,
-       32, 0, 1390,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 595
 };
 static int parser_action_row1204[] = {
        1,
-       -1, 1, 216
+       -1, 1, 566
 };
 static int parser_action_row1205[] = {
        1,
-       -1, 1, 235
+       -1, 1, 594
 };
 static int parser_action_row1206[] = {
-       1,
-       -1, 1, 214
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1207[] = {
-       1,
-       -1, 1, 233
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1208[] = {
-       1,
-       -1, 1, 219
+       2,
+       -1, 1, 940,
+       61, 0, 282
 };
 static int parser_action_row1209[] = {
-       1,
-       -1, 1, 238
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1210[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1211[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1212[] = {
-       1,
-       -1, 1, 223
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1213[] = {
-       1,
-       -1, 1, 242
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1570,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1214[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1213,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1215[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1214,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1216[] = {
-       1,
-       -1, 1, 202
+       4,
+       -1, 3, 1215,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1217[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1216,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1218[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1219[] = {
-       13,
-       -1, 1, 347,
-       62, 0, 1398,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1776
 };
 static int parser_action_row1220[] = {
-       1,
-       -1, 1, 192
+       2,
+       -1, 1, 822,
+       59, 0, 1217
 };
 static int parser_action_row1221[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1222[] = {
        1,
-       -1, 1, 786
+       -1, 1, 823
 };
 static int parser_action_row1223[] = {
-       2,
-       -1, 1, 789,
-       55, 0, 277
+       1,
+       -1, 1, 843
 };
 static int parser_action_row1224[] = {
-       3,
-       -1, 1, 793,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 853
 };
 static int parser_action_row1225[] = {
        2,
        -1, 3, 1224,
-       100, 0, 1403
+       10, 0, 1580
 };
 static int parser_action_row1226[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1760
 };
 static int parser_action_row1227[] = {
-       2,
-       -1, 3, 1226,
-       46, 0, 1405
+       6,
+       -1, 1, 972,
+       4, 1, 409,
+       10, 1, 409,
+       16, 1, 409,
+       29, 1, 409,
+       113, 1, 409
 };
 static int parser_action_row1228[] = {
-       5,
+       9,
        -1, 3, 1227,
-       32, 0, 1406,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       6, 0, 523,
+       14, 0, 1581,
+       18, 0, 525,
+       19, 0, 1582,
+       20, 0, 1583,
+       21, 0, 1584,
+       22, 0, 1585,
+       101, 0, 531
 };
 static int parser_action_row1229[] = {
-       1,
-       -1, 1, 767
+       9,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       4, 1, 408,
+       10, 1, 408,
+       16, 1, 408,
+       29, 1, 408,
+       99, 0, 3,
+       113, 1, 408
 };
 static int parser_action_row1230[] = {
-       3,
-       -1, 1, 163,
-       25, 1, 912,
-       50, 1, 1000
+       1,
+       -1, 1, 445
 };
 static int parser_action_row1231[] = {
        2,
-       -1, 3, 1230,
-       54, 0, 1408
+       -1, 1, 444,
+       74, 0, 1589
 };
 static int parser_action_row1232[] = {
        3,
-       -1, 1, 162,
-       25, 1, 911,
-       50, 1, 999
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1233[] = {
-       2,
-       -1, 1, 263,
-       25, 1, 950
+       1,
+       -1, 1, 435
 };
 static int parser_action_row1234[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1233,
+       101, 0, 652
 };
 static int parser_action_row1235[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1763
 };
 static int parser_action_row1236[] = {
-       2,
-       -1, 1, 275,
-       25, 1, 954
+       1,
+       -1, 1, 439
 };
 static int parser_action_row1237[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       31,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1238[] = {
        2,
-       -1, 1, 292,
-       25, 0, 1412
+       -1, 3, 1237,
+       10, 0, 1592
 };
 static int parser_action_row1239[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1413,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1240[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 453
 };
 static int parser_action_row1241[] = {
        2,
-       -1, 3, 1240,
-       60, 0, 1417
+       -1, 1, 447,
+       59, 0, 1594
 };
 static int parser_action_row1242[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 1418,
-       47, 0, 688,
-       99, 0, 54,
-       100, 0, 1419
+       1,
+       -1, 1, 451
 };
 static int parser_action_row1243[] = {
-       2,
-       -1, 1, 198,
-       25, 1, 940
+       1,
+       -1, 1, 452
 };
 static int parser_action_row1244[] = {
        2,
-       -1, 1, 204,
-       25, 1, 946
+       -1, 1, 456,
+       76, 0, 1597
 };
 static int parser_action_row1245[] = {
-       2,
-       -1, 1, 195,
-       25, 1, 937
+       1,
+       -1, 1, 454
 };
 static int parser_action_row1246[] = {
-       1,
-       -1, 1, 270
+       23,
+       -1, 3, 1245,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 816,
+       101, 0, 365
 };
 static int parser_action_row1247[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       23,
+       -1, 3, 1246,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 818,
+       101, 0, 159
 };
 static int parser_action_row1248[] = {
-       1,
-       -1, 1, 271
+       2,
+       -1, 1, 406,
+       10, 0, 1599
 };
 static int parser_action_row1249[] = {
-       4,
-       -1, 3, 1248,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 956
 };
 static int parser_action_row1250[] = {
        1,
-       -1, 1, 266
+       -1, 1, 977
 };
 static int parser_action_row1251[] = {
        2,
-       -1, 1, 206,
-       25, 1, 948
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1252[] = {
-       2,
-       -1, 1, 197,
-       25, 1, 939
+       1,
+       -1, 1, 1017
 };
 static int parser_action_row1253[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1254[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 356,
-       62, 0, 710,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 356,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1433
 };
 static int parser_action_row1255[] = {
+       1,
+       -1, 1, 923
+};
+static int parser_action_row1256[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1256[] = {
-       1,
-       -1, 1, 347
-};
 static int parser_action_row1257[] = {
-       2,
+       3,
        -1, 3, 1256,
-       58, 0, 1426
+       100, 0, 67,
+       101, 0, 1604
 };
 static int parser_action_row1258[] = {
-       4,
+       2,
        -1, 3, 1257,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       102, 0, 1607
 };
 static int parser_action_row1259[] = {
-       1,
-       -1, 1, 1095
+       4,
+       -1, 1, 944,
+       13, 0, 1276,
+       100, 0, 67,
+       101, 0, 1277
 };
 static int parser_action_row1260[] = {
-       2,
-       -1, 1, 812,
-       97, 0, 607
+       1,
+       -1, 1, 761
 };
 static int parser_action_row1261[] = {
-       2,
-       -1, 3, 1260,
-       56, 0, 1429
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1262[] = {
        1,
-       -1, 1, 813
+       -1, 1, 1780
 };
 static int parser_action_row1263[] = {
-       1,
-       -1, 1, 368
+       2,
+       -1, 1, 931,
+       59, 0, 1260
 };
 static int parser_action_row1264[] = {
-       1,
-       -1, 1, 372
+       6,
+       -1, 1, 1348,
+       55, 0, 370,
+       57, 1, 1376,
+       61, 0, 282,
+       76, 1, 1376,
+       97, 1, 1376
 };
 static int parser_action_row1265[] = {
        2,
-       -1, 1, 371,
-       55, 0, 277
+       -1, 1, 941,
+       101, 0, 1612
 };
 static int parser_action_row1266[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1613
 };
 static int parser_action_row1267[] = {
-       1,
-       -1, 1, 420
+       4,
+       -1, 1, 944,
+       13, 0, 1276,
+       100, 0, 67,
+       101, 0, 1615
 };
 static int parser_action_row1268[] = {
-       1,
-       -1, 1, 422
+       4,
+       -1, 1, 1367,
+       57, 1, 1395,
+       76, 1, 1395,
+       97, 1, 1395
 };
 static int parser_action_row1269[] = {
        1,
-       -1, 1, 423
+       -1, 1, 1305
 };
 static int parser_action_row1270[] = {
        1,
-       -1, 1, 424
+       -1, 1, 1401
 };
 static int parser_action_row1271[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 1270,
+       32, 0, 1618,
+       55, 0, 1619
 };
 static int parser_action_row1272[] = {
-       2,
-       -1, 1, 435,
-       59, 0, 1433
+       1,
+       -1, 1, 1375
 };
 static int parser_action_row1273[] = {
        1,
-       -1, 1, 287
+       -1, 1, 1372
 };
 static int parser_action_row1274[] = {
        2,
-       -1, 3, 1273,
-       58, 0, 1436
+       -1, 1, 1378,
+       55, 0, 370
 };
 static int parser_action_row1275[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 1382,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1276[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 942,
+       101, 0, 1622
 };
 static int parser_action_row1277[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 1404,
+       55, 0, 370
 };
 static int parser_action_row1278[] = {
-       14,
-       -1, 1, 348,
-       55, 0, 277,
-       62, 0, 1438,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 1384,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1279[] = {
-       24,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 454,
-       28, 0, 455,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1278,
+       102, 0, 1625
 };
 static int parser_action_row1280[] = {
-       1,
-       -1, 1, 401
+       2,
+       -1, 1, 941,
+       101, 0, 1626
 };
 static int parser_action_row1281[] = {
-       1,
-       -1, 1, 607
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1627
 };
 static int parser_action_row1282[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 21
 };
 static int parser_action_row1283[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 1133,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 31
 };
 static int parser_action_row1284[] = {
-       4,
-       -1, 3, 1283,
-       48, 0, 1443,
-       99, 0, 391,
-       100, 0, 392
+       2,
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1285[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1286[] = {
-       1,
-       -1, 1, 624
+       3,
+       -1, 3, 1285,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1287[] = {
        1,
-       -1, 1, 625
+       -1, 1, 1012
 };
 static int parser_action_row1288[] = {
-       1,
-       -1, 1, 626
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1289[] = {
-       1,
-       -1, 1, 627
+       4,
+       -1, 3, 1288,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1290[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1291[] = {
-       3,
-       -1, 3, 1290,
-       42, 0, 1300,
-       101, 0, 1448
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1635
 };
 static int parser_action_row1292[] = {
-       2,
-       -1, 3, 1291,
-       76, 0, 1449
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1639,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1293[] = {
-       1,
-       -1, 1, 577
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1294[] = {
-       1,
-       -1, 1, 576
+       4,
+       -1, 3, 1293,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1295[] = {
-       1,
-       -1, 1, 578
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1296[] = {
-       1,
-       -1, 1, 589
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1645
 };
 static int parser_action_row1297[] = {
-       1,
-       -1, 1, 628
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1649,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1298[] = {
-       1,
-       -1, 1, 629
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1299[] = {
-       1,
-       -1, 1, 631
+       4,
+       -1, 3, 1298,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1300[] = {
-       1,
-       -1, 1, 630
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1301[] = {
-       2,
-       -1, 1, 605,
-       55, 0, 277
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1655
 };
 static int parser_action_row1302[] = {
-       1,
-       -1, 1, 587
+       7,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1659,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1303[] = {
        2,
-       -1, 1, 595,
-       55, 0, 277
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1304[] = {
-       3,
+       4,
        -1, 3, 1303,
-       57, 0, 1452,
-       58, 0, 1453
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1305[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1306[] = {
        4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       25, 0, 1455
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1665
 };
 static int parser_action_row1307[] = {
-       3,
-       -1, 1, 497,
+       7,
+       -1, 1, 971,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       29, 0, 96,
+       57, 0, 1669,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1308[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1309[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 59
 };
 static int parser_action_row1310[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1309,
+       10, 0, 1673
 };
 static int parser_action_row1311[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1672
 };
 static int parser_action_row1312[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1671
 };
 static int parser_action_row1313[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 491
 };
 static int parser_action_row1314[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 540
 };
 static int parser_action_row1315[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1316[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1315,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1317[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 37
 };
 static int parser_action_row1318[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1317,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1319[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1320[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 1678
 };
 static int parser_action_row1321[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 1320,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1322[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 998
 };
 static int parser_action_row1323[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1324[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1323,
+       10, 0, 1682
 };
 static int parser_action_row1325[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 971,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1326[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1325,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1327[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 39
 };
 static int parser_action_row1328[] = {
-       3,
-       -1, 1, 603,
-       55, 0, 277,
-       61, 0, 216
+       4,
+       -1, 3, 1327,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1329[] = {
-       2,
-       -1, 1, 466,
-       100, 0, 1479
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1330[] = {
-       2,
-       -1, 1, 464,
-       61, 0, 216
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 1687
 };
 static int parser_action_row1331[] = {
-       1,
-       -1, 1, 1088
+       3,
+       -1, 3, 1330,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1332[] = {
-       2,
-       -1, 1, 30,
-       14, 0, 32
+       1,
+       -1, 1, 1000
 };
 static int parser_action_row1333[] = {
-       5,
-       -1, 1, 495,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       10, 0, 1481,
-       98, 0, 3
+       1, 0, 2
 };
 static int parser_action_row1334[] = {
        2,
-       -1, 1, 121,
-       74, 0, 1483
+       -1, 3, 1333,
+       10, 0, 1691
 };
 static int parser_action_row1335[] = {
-       2,
-       -1, 1, 414,
-       60, 0, 857
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1336[] = {
-       1,
-       -1, 1, 120
+       4,
+       -1, 3, 1335,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1337[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       60, 0, 857
+       1,
+       -1, 1, 38
 };
 static int parser_action_row1338[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1337,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1339[] = {
-       1,
-       -1, 1, 1090
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1340[] = {
-       1,
-       -1, 1, 116
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 1696
 };
 static int parser_action_row1341[] = {
-       4,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       59, 0, 1337
+       3,
+       -1, 3, 1340,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1342[] = {
        1,
-       -1, 1, 131
+       -1, 1, 999
 };
 static int parser_action_row1343[] = {
-       2,
-       -1, 1, 125,
-       59, 0, 1490
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1344[] = {
-       1,
-       -1, 1, 129
+       2,
+       -1, 3, 1343,
+       10, 0, 1700
 };
 static int parser_action_row1345[] = {
-       1,
-       -1, 1, 130
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1346[] = {
-       2,
-       -1, 1, 134,
-       76, 0, 1493
+       4,
+       -1, 3, 1345,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1347[] = {
        1,
-       -1, 1, 132
+       -1, 1, 40
 };
 static int parser_action_row1348[] = {
-       23,
+       4,
        -1, 3, 1347,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 610,
-       100, 0, 861
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1349[] = {
-       23,
-       -1, 3, 1348,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 612,
-       100, 0, 679
-};
-static int parser_action_row1350[] = {
-       9,
-       -1, 1, 495,
+       35,
+       -1, 1, 944,
        0, 0, 1,
        1, 0, 2,
-       4, 1, 83,
-       10, 0, 1495,
-       16, 1, 83,
-       29, 1, 83,
-       98, 0, 3,
-       112, 1, 83
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1350[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 1705
 };
 static int parser_action_row1351[] = {
-       1,
-       -1, 1, 480
+       3,
+       -1, 3, 1350,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1352[] = {
        1,
-       -1, 1, 501
+       -1, 1, 1001
 };
 static int parser_action_row1353[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1354[] = {
-       1,
-       -1, 1, 505
+       2,
+       -1, 3, 1353,
+       10, 0, 1709
 };
 static int parser_action_row1355[] = {
-       3,
-       -1, 1, 161,
-       60, 0, 333,
-       97, 0, 204
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1356[] = {
-       2,
-       -1, 3, 1355,
-       58, 0, 1499
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 746,
+       76, 1, 746,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 746,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1357[] = {
-       2,
-       -1, 1, 38,
-       59, 0, 1500
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1712,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1358[] = {
-       1,
-       -1, 1, 27
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1359[] = {
-       8,
-       -1, 3, 1358,
-       11, 0, 1503,
-       12, 0, 1504,
-       13, 0, 1505,
-       17, 0, 1506,
-       39, 0, 1507,
-       40, 0, 1508,
-       42, 0, 1509
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1360[] = {
-       25,
-       -1, 1, 1024,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1361[] = {
-       2,
-       -1, 1, 1030,
-       50, 0, 197
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1712,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1362[] = {
-       2,
-       -1, 1, 1027,
-       50, 0, 197
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1363[] = {
-       1,
-       -1, 1, 1029
+       28,
+       -1, 1, 495,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       25, 1, 1573,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1364[] = {
-       2,
-       -1, 3, 1363,
-       12, 0, 1513
+       3,
+       -1, 1, 501,
+       25, 1, 1579,
+       50, 0, 263
 };
 static int parser_action_row1365[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 498,
+       25, 1, 1576,
+       50, 0, 263
 };
 static int parser_action_row1366[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 500,
+       25, 1, 1578
 };
 static int parser_action_row1367[] = {
-       23,
-       -1, 1, 508,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 266,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1368[] = {
-       23,
-       -1, 1, 509,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1369[] = {
-       23,
-       -1, 1, 517,
-       13, 0, 170,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1368,
+       12, 0, 1730
 };
 static int parser_action_row1370[] = {
-       15,
-       -1, 1, 772,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1516,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1371[] = {
-       1,
-       -1, 1, 817
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 732,
+       61, 0, 282,
+       62, 0, 283,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 732,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 732,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1372[] = {
        1,
-       -1, 1, 1022
+       -1, 1, 613
 };
 static int parser_action_row1373[] = {
-       1,
-       -1, 1, 1032
+       2,
+       -1, 1, 493,
+       25, 1, 1571
 };
 static int parser_action_row1374[] = {
-       1,
-       -1, 1, 1034
+       2,
+       -1, 1, 494,
+       25, 1, 1572
 };
 static int parser_action_row1375[] = {
        1,
-       -1, 1, 1033
+       -1, 1, 618
 };
 static int parser_action_row1376[] = {
-       1,
-       -1, 1, 1035
+       4,
+       -1, 3, 1375,
+       57, 0, 306,
+       76, 0, 1733,
+       97, 0, 1734
 };
 static int parser_action_row1377[] = {
-       1,
-       -1, 1, 1036
+       3,
+       -1, 3, 1376,
+       42, 0, 1735,
+       102, 0, 318
 };
 static int parser_action_row1378[] = {
-       1,
-       -1, 1, 1037
+       3,
+       -1, 1, 941,
+       13, 0, 1736,
+       101, 0, 1737
 };
 static int parser_action_row1379[] = {
-       1,
-       -1, 1, 431
+       33,
+       -1, 1, 944,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       25, 0, 1738,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1380[] = {
-       3,
+       2,
        -1, 3, 1379,
-       42, 0, 299,
-       101, 0, 1519
+       25, 0, 1742
 };
 static int parser_action_row1381[] = {
-       23,
-       -1, 1, 465,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 610,
-       100, 0, 1520
+       1,
+       -1, 1, 1581
 };
 static int parser_action_row1382[] = {
        1,
-       -1, 1, 821
+       -1, 1, 1582
 };
 static int parser_action_row1383[] = {
        1,
-       -1, 1, 1023
+       -1, 1, 1584
 };
 static int parser_action_row1384[] = {
        1,
-       -1, 1, 818
+       -1, 1, 1583
 };
 static int parser_action_row1385[] = {
-       3,
-       -1, 1, 755,
-       57, 0, 244,
-       76, 0, 1521
+       1,
+       -1, 1, 1585
 };
 static int parser_action_row1386[] = {
        1,
-       -1, 1, 434
+       -1, 1, 1586
 };
 static int parser_action_row1387[] = {
-       2,
-       -1, 1, 815,
-       59, 0, 1433
+       1,
+       -1, 1, 1587
 };
 static int parser_action_row1388[] = {
-       1,
-       -1, 1, 819
+       4,
+       -1, 1, 943,
+       13, 0, 1743,
+       100, 0, 67,
+       101, 0, 1744
 };
 static int parser_action_row1389[] = {
-       23,
-       -1, 1, 467,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 612,
-       100, 0, 1524
+       1,
+       -1, 1, 624
 };
 static int parser_action_row1390[] = {
-       1,
-       -1, 1, 376
+       2,
+       -1, 3, 1389,
+       50, 0, 263
 };
 static int parser_action_row1391[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1390,
+       56, 0, 1747
 };
 static int parser_action_row1392[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 626
 };
 static int parser_action_row1393[] = {
-       1,
-       -1, 1, 218
+       2,
+       -1, 3, 1392,
+       50, 0, 263
 };
 static int parser_action_row1394[] = {
-       1,
-       -1, 1, 237
+       3,
+       -1, 3, 1393,
+       55, 0, 462,
+       101, 0, 463
 };
 static int parser_action_row1395[] = {
-       1,
-       -1, 1, 222
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1396[] = {
        1,
-       -1, 1, 241
+       -1, 1, 936
 };
 static int parser_action_row1397[] = {
-       1,
-       -1, 1, 221
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1398[] = {
-       1,
-       -1, 1, 240
+       2,
+       -1, 3, 1397,
+       102, 0, 1752
 };
 static int parser_action_row1399[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 944,
+       13, 0, 1410,
+       100, 0, 67,
+       101, 0, 1411
 };
 static int parser_action_row1400[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       6,
+       -1, 1, 688,
+       55, 0, 370,
+       57, 1, 716,
+       61, 0, 282,
+       76, 1, 716,
+       97, 1, 716
 };
 static int parser_action_row1401[] = {
        2,
-       -1, 3, 1400,
-       25, 0, 1530
+       -1, 1, 941,
+       101, 0, 1755
 };
 static int parser_action_row1402[] = {
-       1,
-       -1, 1, 788
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1756
 };
 static int parser_action_row1403[] = {
-       1,
-       -1, 1, 792
+       4,
+       -1, 1, 944,
+       13, 0, 1410,
+       100, 0, 67,
+       101, 0, 1758
 };
 static int parser_action_row1404[] = {
-       2,
-       -1, 1, 791,
-       55, 0, 277
+       4,
+       -1, 1, 707,
+       57, 1, 735,
+       76, 1, 735,
+       97, 1, 735
 };
 static int parser_action_row1405[] = {
        1,
-       -1, 1, 456
+       -1, 1, 645
 };
 static int parser_action_row1406[] = {
        1,
-       -1, 1, 796
+       -1, 1, 715
 };
 static int parser_action_row1407[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 712
 };
 static int parser_action_row1408[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 718,
+       55, 0, 370
 };
 static int parser_action_row1409[] = {
-       5,
-       -1, 3, 1408,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 756,
-       98, 0, 3
+       3,
+       -1, 1, 722,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1410[] = {
        2,
-       -1, 3, 1409,
-       24, 0, 1535
+       -1, 1, 942,
+       101, 0, 1763
 };
 static int parser_action_row1411[] = {
        2,
-       -1, 3, 1410,
-       16, 0, 1536
+       -1, 1, 744,
+       55, 0, 370
 };
 static int parser_action_row1412[] = {
        3,
-       -1, 3, 1411,
-       16, 0, 1537,
-       59, 0, 769
+       -1, 1, 724,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1413[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1413,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1412,
+       102, 0, 1765
 };
 static int parser_action_row1414[] = {
        2,
-       -1, 1, 164,
-       25, 1, 913
+       -1, 1, 941,
+       101, 0, 1766
 };
 static int parser_action_row1415[] = {
-       31,
-       -1, 1, 468,
-       10, 0, 1539,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 1767
 };
 static int parser_action_row1416[] = {
-       1,
-       -1, 1, 962
+       4,
+       -1, 3, 1415,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1417[] = {
        2,
-       -1, 3, 1416,
-       16, 0, 1541
+       -1, 1, 478,
+       59, 0, 1770
 };
 static int parser_action_row1418[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1419[] = {
-       26,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 362,
-       76, 1, 362,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1420[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 344,
-       61, 0, 216,
-       62, 0, 870,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 344,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1421[] = {
        3,
-       -1, 1, 465,
-       13, 0, 1545,
-       100, 0, 1546
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1422[] = {
-       4,
-       -1, 1, 467,
-       13, 0, 1547,
-       99, 0, 54,
-       100, 0, 1548
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1423[] = {
-       1,
-       -1, 1, 268
+       2,
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1424[] = {
-       2,
-       -1, 1, 205,
-       25, 1, 947
+       4,
+       -1, 3, 1423,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1425[] = {
-       2,
-       -1, 1, 196,
-       25, 1, 938
+       4,
+       -1, 3, 1424,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1426[] = {
-       2,
+       4,
        -1, 3, 1425,
-       25, 0, 1550
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1427[] = {
-       2,
-       -1, 1, 812,
-       97, 0, 607
+       4,
+       -1, 3, 1426,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1428[] = {
-       1,
-       -1, 1, 158
+       9,
+       -1, 3, 1427,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       101, 0, 531
 };
 static int parser_action_row1429[] = {
        1,
-       -1, 1, 639
+       -1, 1, 1438
 };
 static int parser_action_row1430[] = {
-       1,
-       -1, 1, 810
+       3,
+       -1, 1, 749,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1431[] = {
-       1,
-       -1, 1, 370
+       2,
+       -1, 3, 1430,
+       101, 0, 1785
 };
 static int parser_action_row1432[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 1431,
+       100, 0, 67,
+       101, 0, 1786
 };
 static int parser_action_row1433[] = {
-       2,
-       -1, 3, 1432,
-       56, 0, 1553
+       3,
+       -1, 1, 800,
+       55, 0, 1788,
+       98, 0, 270
 };
 static int parser_action_row1434[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 800,
+       55, 0, 1790,
+       98, 0, 270
 };
 static int parser_action_row1435[] = {
-       1,
-       -1, 1, 1106
+       3,
+       -1, 1, 800,
+       55, 0, 1792,
+       98, 0, 270
 };
 static int parser_action_row1436[] = {
-       2,
-       -1, 1, 436,
-       59, 0, 1433
+       3,
+       -1, 1, 800,
+       55, 0, 1794,
+       98, 0, 270
 };
 static int parser_action_row1437[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1438[] = {
-       1,
-       -1, 1, 154
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1439[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 802
 };
 static int parser_action_row1440[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1441[] = {
        1,
-       -1, 1, 402
+       -1, 1, 804
 };
 static int parser_action_row1442[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1443[] = {
        1,
-       -1, 1, 547
+       -1, 1, 803
 };
 static int parser_action_row1444[] = {
        3,
-       -1, 3, 1443,
-       99, 0, 391,
-       100, 0, 392
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1445[] = {
-       2,
-       -1, 1, 812,
-       97, 0, 607
+       1,
+       -1, 1, 805
 };
 static int parser_action_row1446[] = {
-       3,
-       -1, 1, 582,
-       55, 0, 277,
-       76, 0, 1561
+       2,
+       -1, 3, 1445,
+       56, 0, 1801
 };
 static int parser_action_row1447[] = {
-       1,
-       -1, 1, 579
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1448[] = {
-       4,
-       -1, 3, 1447,
-       48, 0, 1443,
-       99, 0, 391,
-       100, 0, 392
+       2,
+       -1, 1, 910,
+       59, 0, 1803
 };
 static int parser_action_row1449[] = {
-       2,
-       -1, 1, 584,
-       76, 1, 587
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1450[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1451[] = {
        1,
-       -1, 1, 604
+       -1, 1, 631
 };
 static int parser_action_row1452[] = {
-       1,
-       -1, 1, 593
+       2,
+       -1, 3, 1451,
+       50, 0, 263
 };
 static int parser_action_row1453[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       4,
+       -1, 3, 1452,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1454[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1455[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 1133,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1456[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       15,
+       -1, 1, 716,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 1812,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1457[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 1133,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       22,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 1813
 };
 static int parser_action_row1458[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 1133,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 916
 };
 static int parser_action_row1459[] = {
-       4,
-       -1, 3, 1458,
-       48, 0, 1571,
-       99, 0, 391,
-       100, 0, 392
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 1814
 };
 static int parser_action_row1460[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       24,
+       -1, 1, 944,
+       13, 0, 1410,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 1816
 };
 static int parser_action_row1461[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 779
 };
 static int parser_action_row1462[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 781
 };
 static int parser_action_row1463[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 778
 };
 static int parser_action_row1464[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1465[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 3, 1464,
+       24, 0, 1820
 };
 static int parser_action_row1466[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       3,
+       -1, 3, 1465,
+       16, 0, 1821,
+       59, 0, 1057
 };
 static int parser_action_row1467[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       24,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       23, 0, 1824,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1468[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 777
 };
 static int parser_action_row1469[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1470[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 784
 };
 static int parser_action_row1471[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       3,
+       -1, 1, 483,
+       60, 0, 439,
+       98, 0, 270
 };
 static int parser_action_row1472[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 3, 1471,
+       58, 0, 1865
 };
 static int parser_action_row1473[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 1, 100,
+       59, 0, 1866
 };
 static int parser_action_row1474[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       1,
+       -1, 1, 64
 };
 static int parser_action_row1475[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1476[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       2,
+       -1, 3, 1475,
+       60, 0, 139
 };
 static int parser_action_row1477[] = {
-       20,
-       -1, 1, 468,
-       13, 0, 1133,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       3,
+       -1, 3, 1476,
+       15, 0, 1496,
+       16, 0, 1871
 };
 static int parser_action_row1478[] = {
        5,
-       -1, 1, 468,
-       13, 0, 1592,
-       47, 0, 1593,
-       99, 0, 54,
-       100, 0, 1594
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1479[] = {
-       1,
-       -1, 1, 601
+       23,
+       -1, 3, 1478,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1480[] = {
-       2,
-       -1, 1, 599,
-       55, 0, 277
+       3,
+       -1, 3, 1479,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1481[] = {
-       5,
-       -1, 1, 84,
-       19, 0, 236,
-       20, 0, 237,
-       21, 0, 238,
-       22, 0, 239
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1482[] = {
-       1,
-       -1, 1, 80
+       2,
+       -1, 3, 1481,
+       101, 0, 1878
 };
 static int parser_action_row1483[] = {
-       1,
-       -1, 1, 1089
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1484[] = {
-       1,
-       -1, 1, 123
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1485[] = {
-       2,
-       -1, 1, 122,
-       74, 0, 1600
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1486[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1487[] = {
-       1,
-       -1, 1, 113
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1488[] = {
-       2,
+       3,
        -1, 3, 1487,
-       100, 0, 1178
+       15, 0, 1496,
+       16, 0, 1885
 };
 static int parser_action_row1489[] = {
-       1,
-       -1, 1, 1091
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1490[] = {
-       1,
-       -1, 1, 117
+       2,
+       -1, 1, 483,
+       60, 0, 439
 };
 static int parser_action_row1491[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       8,
+       -1, 3, 1490,
+       11, 0, 1889,
+       12, 0, 1890,
+       13, 0, 1891,
+       17, 0, 1892,
+       39, 0, 1893,
+       40, 0, 1894,
+       42, 0, 1895
 };
 static int parser_action_row1492[] = {
-       1,
-       -1, 1, 1092
+       8,
+       -1, 3, 1491,
+       11, 0, 1896,
+       12, 0, 1897,
+       13, 0, 1898,
+       17, 0, 1899,
+       39, 0, 1900,
+       40, 0, 1901,
+       42, 0, 1902
 };
 static int parser_action_row1493[] = {
-       2,
-       -1, 1, 126,
-       59, 0, 1490
+       8,
+       -1, 3, 1492,
+       11, 0, 1903,
+       12, 0, 1904,
+       13, 0, 1905,
+       17, 0, 1906,
+       39, 0, 1907,
+       40, 0, 1908,
+       42, 0, 1909
 };
 static int parser_action_row1494[] = {
-       24,
+       8,
        -1, 3, 1493,
-       47, 0, 1605,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       11, 0, 1910,
+       12, 0, 1911,
+       13, 0, 1912,
+       17, 0, 1913,
+       39, 0, 1914,
+       40, 0, 1915,
+       42, 0, 1916
 };
 static int parser_action_row1495[] = {
-       23,
-       -1, 3, 1494,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 814,
-       100, 0, 861
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 1917
 };
 static int parser_action_row1496[] = {
-       1,
-       -1, 1, 507
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1497[] = {
-       1,
-       -1, 1, 502
+       12,
+       -1, 3, 1496,
+       0, 0, 100,
+       1, 0, 101,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       99, 0, 102,
+       101, 0, 531
 };
 static int parser_action_row1498[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1499[] = {
        2,
-       -1, 1, 161,
-       60, 0, 333
+       -1, 3, 1498,
+       16, 0, 1925
 };
 static int parser_action_row1500[] = {
-       6,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       29, 0, 84,
-       98, 0, 3,
-       112, 0, 85
+       4,
+       -1, 3, 1499,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1501[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       27,
+       -1, 1, 1696,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1502[] = {
-       1,
-       -1, 1, 1084
+       2,
+       -1, 1, 1702,
+       50, 0, 263
 };
 static int parser_action_row1503[] = {
        2,
-       -1, 1, 39,
-       59, 0, 1500
+       -1, 1, 1699,
+       50, 0, 263
 };
 static int parser_action_row1504[] = {
-       23,
-       -1, 3, 1503,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       1,
+       -1, 1, 1701
 };
 static int parser_action_row1505[] = {
-       3,
+       2,
        -1, 3, 1504,
-       99, 0, 391,
-       100, 0, 392
+       12, 0, 1930
 };
 static int parser_action_row1506[] = {
-       27,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       57, 0, 659,
-       60, 0, 857,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1507[] = {
-       2,
-       -1, 3, 1506,
-       100, 0, 1617
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1508[] = {
-       27,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       57, 0, 659,
-       60, 0, 857,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 54,
-       100, 0, 679
+       25,
+       -1, 1, 1029,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1509[] = {
-       3,
-       -1, 3, 1508,
-       15, 0, 1620,
-       16, 0, 1621
+       25,
+       -1, 1, 1030,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1510[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       17,
+       -1, 1, 1037,
+       11, 0, 167,
+       13, 0, 168,
+       39, 0, 380,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       100, 0, 67,
+       101, 0, 386,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1511[] = {
-       1,
-       -1, 1, 1025
+       25,
+       -1, 1, 1038,
+       11, 0, 218,
+       13, 0, 235,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1512[] = {
-       1,
-       -1, 1, 1031
+       15,
+       -1, 1, 1392,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 1933,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1513[] = {
        1,
-       -1, 1, 1028
+       -1, 1, 1460
 };
 static int parser_action_row1514[] = {
-       4,
-       -1, 3, 1513,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 1694
 };
 static int parser_action_row1515[] = {
        1,
-       -1, 1, 1026
+       -1, 1, 1704
 };
 static int parser_action_row1516[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1706
 };
 static int parser_action_row1517[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1705
 };
 static int parser_action_row1518[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1707
 };
 static int parser_action_row1519[] = {
-       13,
-       -1, 1, 771,
-       62, 0, 1628,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1708
 };
 static int parser_action_row1520[] = {
-       13,
-       -1, 1, 762,
-       62, 0, 1630,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1709
 };
 static int parser_action_row1521[] = {
-       14,
-       -1, 1, 774,
-       55, 0, 277,
-       62, 0, 1632,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 906
 };
 static int parser_action_row1522[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 1521,
+       42, 0, 396,
+       102, 0, 1936
 };
 static int parser_action_row1523[] = {
-       13,
-       -1, 1, 785,
-       62, 0, 1636,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       23,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 816,
+       101, 0, 1937
 };
 static int parser_action_row1524[] = {
-       2,
-       -1, 1, 816,
-       59, 0, 1433
+       1,
+       -1, 1, 1465
 };
 static int parser_action_row1525[] = {
-       15,
-       -1, 1, 778,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1638,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1695
 };
 static int parser_action_row1526[] = {
-       23,
-       -1, 1, 466,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 814,
-       100, 0, 1641
+       1,
+       -1, 1, 1461
 };
 static int parser_action_row1527[] = {
-       2,
-       -1, 3, 1526,
-       46, 0, 1642
+       4,
+       -1, 1, 1341,
+       57, 0, 306,
+       76, 0, 1938,
+       97, 0, 1939
 };
 static int parser_action_row1528[] = {
-       2,
-       -1, 3, 1527,
-       56, 0, 1643
+       1,
+       -1, 1, 909
 };
 static int parser_action_row1529[] = {
-       1,
-       -1, 1, 220
+       2,
+       -1, 1, 1458,
+       59, 0, 1803
 };
 static int parser_action_row1530[] = {
        1,
-       -1, 1, 239
+       -1, 1, 1462
 };
 static int parser_action_row1531[] = {
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 818,
+       101, 0, 1942
+};
+static int parser_action_row1532[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1532[] = {
-       1,
-       -1, 1, 790
-};
 static int parser_action_row1533[] = {
-       2,
-       -1, 3, 1532,
-       46, 0, 1645
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1534[] = {
-       2,
-       -1, 3, 1533,
-       56, 0, 1646
+       1,
+       -1, 1, 546
 };
 static int parser_action_row1535[] = {
-       2,
-       -1, 1, 265,
-       25, 1, 952
+       1,
+       -1, 1, 574
 };
 static int parser_action_row1536[] = {
-       35,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 912,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       25, 0, 916,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1537[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1062,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1538[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1062,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1539[] = {
-       1,
-       -1, 1, 963
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1540[] = {
-       2,
-       -1, 1, 163,
-       25, 1, 912
+       1,
+       -1, 1, 526
 };
 static int parser_action_row1541[] = {
-       2,
-       -1, 1, 162,
-       25, 1, 911
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1542[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1062,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1543[] = {
-       2,
-       -1, 1, 207,
-       25, 1, 949
+       13,
+       -1, 1, 717,
+       62, 0, 1952,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1544[] = {
-       2,
-       -1, 1, 199,
-       25, 1, 941
+       1,
+       -1, 1, 511
 };
 static int parser_action_row1545[] = {
-       2,
-       -1, 1, 190,
-       25, 1, 932
+       1,
+       -1, 1, 528
 };
 static int parser_action_row1546[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1547[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 346,
-       62, 0, 1034,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 346,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1548[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       13,
+       -1, 1, 721,
+       62, 0, 1956,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1549[] = {
-       39,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 350,
-       61, 0, 216,
-       62, 0, 1039,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 350,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 513
 };
 static int parser_action_row1550[] = {
-       3,
-       -1, 1, 466,
-       13, 0, 1658,
-       100, 0, 1659
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1551[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 720,
+       62, 0, 1959,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 720,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 720,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1552[] = {
        1,
-       -1, 1, 640
+       -1, 1, 743
 };
 static int parser_action_row1553[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 524
 };
 static int parser_action_row1554[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1555[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1556[] = {
-       1,
-       -1, 1, 1107
+       13,
+       -1, 1, 723,
+       62, 0, 1965,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1557[] = {
        1,
-       -1, 1, 155
+       -1, 1, 514
 };
 static int parser_action_row1558[] = {
-       2,
-       -1, 1, 400,
-       25, 0, 1550
+       13,
+       -1, 1, 713,
+       62, 0, 1967,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1559[] = {
-       2,
-       -1, 3, 1558,
-       24, 0, 1664
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1560[] = {
-       2,
-       -1, 1, 812,
-       97, 0, 607
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 726,
+       62, 0, 1970,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 726,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 726,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1561[] = {
-       1,
-       -1, 1, 825
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1562[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 730,
+       61, 0, 282,
+       62, 0, 1975,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 730,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 730,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1563[] = {
-       1,
-       -1, 1, 581
+       3,
+       -1, 1, 942,
+       13, 0, 1979,
+       101, 0, 1980
 };
 static int parser_action_row1564[] = {
-       2,
-       -1, 3, 1563,
-       76, 0, 1561
+       1,
+       -1, 1, 925
 };
 static int parser_action_row1565[] = {
-       5,
-       -1, 1, 468,
-       13, 0, 1592,
-       47, 0, 1593,
-       99, 0, 54,
-       100, 0, 1594
+       1,
+       -1, 1, 565
 };
 static int parser_action_row1566[] = {
        1,
-       -1, 1, 391
+       -1, 1, 593
 };
 static int parser_action_row1567[] = {
-       1,
-       -1, 1, 390
+       4,
+       -1, 3, 1566,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1568[] = {
-       1,
-       -1, 1, 543
+       4,
+       -1, 3, 1567,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1569[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 1133,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+       4,
+       -1, 3, 1568,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1570[] = {
-       1,
-       -1, 1, 542
+       4,
+       -1, 3, 1569,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1571[] = {
-       1,
-       -1, 1, 545
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1572[] = {
-       3,
-       -1, 3, 1571,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 828
 };
 static int parser_action_row1573[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       1,
+       -1, 1, 848
 };
 static int parser_action_row1574[] = {
-       1,
-       -1, 1, 556
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1986,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1575[] = {
-       2,
-       -1, 1, 558,
-       84, 0, 1316
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1989,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1576[] = {
-       2,
-       -1, 1, 549,
-       83, 0, 1308
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1992,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1577[] = {
-       2,
-       -1, 1, 550,
-       83, 0, 1308
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 1995,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1578[] = {
-       2,
-       -1, 1, 551,
-       83, 0, 1308
+       9,
+       -1, 3, 1577,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       101, 0, 531
 };
 static int parser_action_row1579[] = {
-       2,
-       -1, 1, 552,
-       83, 0, 1308
+       1,
+       -1, 1, 1777
 };
 static int parser_action_row1580[] = {
-       2,
-       -1, 1, 553,
-       83, 0, 1308
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1581[] = {
-       2,
-       -1, 1, 554,
-       83, 0, 1308
+       1,
+       -1, 1, 403
 };
 static int parser_action_row1582[] = {
-       2,
-       -1, 1, 555,
-       83, 0, 1308
+       8,
+       -1, 3, 1581,
+       6, 0, 523,
+       18, 0, 525,
+       19, 0, 2000,
+       20, 0, 2001,
+       21, 0, 2002,
+       22, 0, 2003,
+       101, 0, 531
 };
 static int parser_action_row1583[] = {
-       2,
-       -1, 1, 560,
-       85, 0, 1317
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1584[] = {
        3,
-       -1, 1, 562,
-       91, 0, 1318,
-       94, 0, 1319
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1585[] = {
        3,
-       -1, 1, 564,
-       77, 0, 1320,
-       78, 0, 1321
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1586[] = {
        3,
-       -1, 1, 565,
-       77, 0, 1320,
-       78, 0, 1321
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1587[] = {
-       4,
-       -1, 1, 567,
-       79, 0, 1322,
-       81, 0, 1323,
-       82, 0, 1324
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2009,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1588[] = {
-       4,
-       -1, 1, 568,
-       79, 0, 1322,
-       81, 0, 1323,
-       82, 0, 1324
+       1,
+       -1, 1, 1761
 };
 static int parser_action_row1589[] = {
-       1,
-       -1, 1, 570
+       6,
+       -1, 1, 972,
+       4, 1, 410,
+       10, 1, 410,
+       16, 1, 410,
+       29, 1, 410,
+       113, 1, 410
 };
 static int parser_action_row1590[] = {
        1,
-       -1, 1, 571
+       -1, 1, 446
 };
 static int parser_action_row1591[] = {
        1,
-       -1, 1, 572
+       -1, 1, 434
 };
 static int parser_action_row1592[] = {
        1,
-       -1, 1, 574
+       -1, 1, 441
 };
 static int parser_action_row1593[] = {
-       2,
-       -1, 1, 608,
-       55, 0, 277
+       1,
+       -1, 1, 771
 };
 static int parser_action_row1594[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1593,
+       10, 0, 2013
 };
 static int parser_action_row1595[] = {
        3,
-       -1, 1, 590,
-       55, 0, 277,
-       61, 0, 216
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1596[] = {
-       2,
-       -1, 3, 1595,
-       101, 0, 1674
+       1,
+       -1, 1, 1764
 };
 static int parser_action_row1597[] = {
        2,
-       -1, 1, 465,
-       100, 0, 1675
+       -1, 1, 448,
+       59, 0, 1594
 };
 static int parser_action_row1598[] = {
-       3,
-       -1, 1, 467,
-       99, 0, 54,
-       100, 0, 1676
+       24,
+       -1, 3, 1597,
+       47, 0, 2016,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
 };
 static int parser_action_row1599[] = {
-       1,
-       -1, 1, 597
+       23,
+       -1, 3, 1598,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 1114,
+       101, 0, 365
 };
 static int parser_action_row1600[] = {
-       4,
-       -1, 3, 1599,
-       6, 0, 818,
-       18, 0, 819,
-       100, 0, 820
+       1,
+       -1, 1, 1028
 };
 static int parser_action_row1601[] = {
        1,
-       -1, 1, 124
+       -1, 1, 987
 };
 static int parser_action_row1602[] = {
-       1,
-       -1, 1, 112
+       2,
+       -1, 3, 1601,
+       10, 0, 2018
 };
 static int parser_action_row1603[] = {
-       1,
-       -1, 1, 119
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1604[] = {
        25,
-       -1, 3, 1603,
-       42, 0, 1341,
-       48, 0, 403,
-       57, 0, 659,
-       77, 0, 660,
-       78, 0, 661,
-       79, 0, 662,
-       80, 0, 663,
-       81, 0, 664,
-       82, 0, 665,
-       83, 0, 666,
-       84, 0, 667,
-       85, 0, 668,
-       86, 0, 669,
-       87, 0, 670,
-       88, 0, 671,
-       89, 0, 672,
-       90, 0, 673,
-       91, 0, 674,
-       92, 0, 675,
-       93, 0, 676,
-       94, 0, 677,
-       95, 0, 678,
-       99, 0, 391,
-       100, 0, 679
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1605[] = {
-       1,
-       -1, 1, 1093
+       3,
+       -1, 1, 1409,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1606[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1605,
+       101, 0, 2022
 };
 static int parser_action_row1607[] = {
-       1,
-       -1, 1, 133
+       3,
+       -1, 3, 1606,
+       100, 0, 67,
+       101, 0, 2023
 };
 static int parser_action_row1608[] = {
-       1,
-       -1, 1, 42
+       4,
+       -1, 1, 1344,
+       57, 1, 1372,
+       76, 1, 1372,
+       97, 1, 1372
 };
 static int parser_action_row1609[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1608,
+       102, 0, 2025
 };
 static int parser_action_row1610[] = {
-       2,
-       -1, 3, 1609,
-       10, 0, 1682
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 676,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1611[] = {
-       4,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1,
+       -1, 1, 1781
 };
 static int parser_action_row1612[] = {
-       2,
-       -1, 3, 1611,
-       99, 0, 1354
+       4,
+       -1, 1, 1347,
+       57, 1, 1375,
+       76, 1, 1375,
+       97, 1, 1375
 };
 static int parser_action_row1613[] = {
-       1,
-       -1, 1, 1085
+       5,
+       -1, 1, 1350,
+       55, 0, 370,
+       57, 1, 1378,
+       76, 1, 1378,
+       97, 1, 1378
 };
 static int parser_action_row1614[] = {
-       5,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       60, 0, 857
+       6,
+       -1, 1, 1354,
+       55, 0, 370,
+       57, 1, 1382,
+       61, 0, 282,
+       76, 1, 1382,
+       97, 1, 1382
 };
 static int parser_action_row1615[] = {
        2,
-       -1, 3, 1614,
-       60, 0, 857
+       -1, 1, 942,
+       101, 0, 2029
 };
 static int parser_action_row1616[] = {
-       3,
-       -1, 3, 1615,
-       15, 0, 1620,
-       16, 0, 1687
+       6,
+       -1, 1, 1356,
+       55, 0, 370,
+       57, 1, 1384,
+       61, 0, 282,
+       76, 1, 1384,
+       97, 1, 1384
 };
 static int parser_action_row1617[] = {
-       5,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       60, 0, 857
+       2,
+       -1, 1, 941,
+       101, 0, 2031
 };
 static int parser_action_row1618[] = {
-       2,
-       -1, 1, 161,
-       60, 0, 333
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 2032
 };
 static int parser_action_row1619[] = {
-       4,
-       -1, 1, 127,
-       4, 0, 1007,
-       15, 0, 1008,
-       16, 0, 1691
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1620[] = {
-       5,
-       -1, 1, 497,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       55, 0, 856,
-       60, 0, 857
+       1, 0, 2
 };
 static int parser_action_row1621[] = {
-       5,
-       -1, 1, 30,
-       0, 0, 88,
-       1, 0, 89,
-       14, 0, 32,
-       98, 0, 90
+       1,
+       -1, 1, 1377
 };
 static int parser_action_row1622[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1381
 };
 static int parser_action_row1623[] = {
        2,
-       -1, 3, 1622,
-       16, 0, 1699
+       -1, 1, 1380,
+       55, 0, 370
 };
 static int parser_action_row1624[] = {
-       4,
-       -1, 3, 1623,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 1403
 };
 static int parser_action_row1625[] = {
-       2,
-       -1, 3, 1624,
-       60, 0, 1701
+       1,
+       -1, 1, 1383
 };
 static int parser_action_row1626[] = {
-       2,
-       -1, 3, 1625,
-       56, 0, 1702
+       1,
+       -1, 1, 1373
 };
 static int parser_action_row1627[] = {
-       1,
-       -1, 1, 687
+       2,
+       -1, 1, 1386,
+       55, 0, 370
 };
 static int parser_action_row1628[] = {
-       1,
-       -1, 1, 706
+       3,
+       -1, 1, 1390,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1629[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 942,
+       101, 0, 2039
 };
 static int parser_action_row1630[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 982
 };
 static int parser_action_row1631[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1632[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1022
 };
 static int parser_action_row1633[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1632,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1634[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 42
 };
 static int parser_action_row1635[] = {
-       13,
-       -1, 1, 773,
-       62, 0, 1709,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       4,
+       -1, 3, 1634,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1636[] = {
-       25,
-       -1, 1, 468,
-       13, 0, 749,
-       47, 0, 750,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 54,
-       100, 0, 1711
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1637[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2044
 };
 static int parser_action_row1638[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 1637,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1639[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1003
 };
 static int parser_action_row1640[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1641[] = {
-       13,
-       -1, 1, 777,
-       62, 0, 1720,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       2,
+       -1, 3, 1640,
+       10, 0, 2048
 };
 static int parser_action_row1642[] = {
-       14,
-       -1, 1, 776,
-       55, 0, 277,
-       62, 0, 1722,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
-};
-static int parser_action_row1643[] = {
-       3,
-       -1, 1, 497,
+       4,
+       -1, 1, 971,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row1643[] = {
+       4,
+       -1, 3, 1642,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1644[] = {
        1,
-       -1, 1, 374
+       -1, 1, 44
 };
 static int parser_action_row1645[] = {
-       21,
-       -1, 1, 468,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       4,
+       -1, 3, 1644,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1646[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1647[] = {
-       1,
-       -1, 1, 794
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2053
 };
 static int parser_action_row1648[] = {
-       2,
+       3,
        -1, 3, 1647,
-       25, 0, 1728
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1649[] = {
        1,
-       -1, 1, 957
+       -1, 1, 1005
 };
 static int parser_action_row1650[] = {
-       2,
-       -1, 3, 1649,
-       50, 0, 197
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1651[] = {
-       1,
-       -1, 1, 959
+       2,
+       -1, 3, 1650,
+       10, 0, 2057
 };
 static int parser_action_row1652[] = {
-       2,
-       -1, 3, 1651,
-       50, 0, 197
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1653[] = {
-       1,
-       -1, 1, 961
+       4,
+       -1, 3, 1652,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1654[] = {
-       2,
-       -1, 3, 1653,
-       50, 0, 197
+       1,
+       -1, 1, 43
 };
 static int parser_action_row1655[] = {
-       2,
-       -1, 1, 201,
-       25, 1, 943
+       4,
+       -1, 3, 1654,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1656[] = {
-       2,
-       -1, 1, 191,
-       25, 1, 933
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1657[] = {
-       2,
-       -1, 1, 203,
-       25, 1, 945
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2062
 };
 static int parser_action_row1658[] = {
-       2,
-       -1, 1, 193,
-       25, 1, 935
+       3,
+       -1, 3, 1657,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1659[] = {
-       24,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 495,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       1,
+       -1, 1, 1004
 };
 static int parser_action_row1660[] = {
-       38,
-       -1, 1, 452,
-       13, 0, 116,
-       23, 0, 117,
-       32, 0, 118,
-       39, 0, 119,
-       41, 0, 120,
-       42, 1, 468,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       49, 0, 125,
-       55, 0, 126,
-       57, 1, 348,
-       62, 0, 1216,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228,
-       76, 1, 348,
-       77, 0, 127,
-       78, 0, 128,
-       86, 0, 129,
-       99, 0, 54,
-       100, 0, 130,
-       101, 1, 468,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1661[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1660,
+       10, 0, 2066
 };
 static int parser_action_row1662[] = {
-       2,
-       -1, 3, 1661,
-       56, 0, 1735
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1663[] = {
-       1,
-       -1, 1, 417
+       4,
+       -1, 3, 1662,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1664[] = {
        1,
-       -1, 1, 437
+       -1, 1, 45
 };
 static int parser_action_row1665[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       4,
+       -1, 3, 1664,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
 };
 static int parser_action_row1666[] = {
-       1,
-       -1, 1, 826
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1667[] = {
        3,
-       -1, 3, 1666,
-       99, 0, 54,
-       100, 0, 1737
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2071
 };
 static int parser_action_row1668[] = {
-       2,
+       3,
        -1, 3, 1667,
-       101, 0, 1740
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1669[] = {
        1,
-       -1, 1, 544
+       -1, 1, 1006
 };
 static int parser_action_row1670[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1671[] = {
-       1,
-       -1, 1, 537
+       2,
+       -1, 3, 1670,
+       10, 0, 2075
 };
 static int parser_action_row1672[] = {
-       1,
-       -1, 1, 606
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1673[] = {
-       3,
+       2,
        -1, 3, 1672,
-       32, 0, 1742,
-       55, 0, 1743
+       58, 0, 2077
 };
 static int parser_action_row1674[] = {
        1,
-       -1, 1, 588
+       -1, 1, 69
 };
 static int parser_action_row1675[] = {
        1,
-       -1, 1, 586
+       -1, 1, 541
 };
 static int parser_action_row1676[] = {
-       2,
-       -1, 1, 594,
-       55, 0, 277
+       1,
+       -1, 1, 17
 };
 static int parser_action_row1677[] = {
-       3,
-       -1, 1, 602,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 27
 };
 static int parser_action_row1678[] = {
        2,
-       -1, 1, 466,
-       100, 0, 1746
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1679[] = {
-       57,
-       -1, 1, 468,
-       0, 0, 88,
-       1, 0, 89,
-       13, 0, 116,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 117,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 118,
-       34, 0, 1359,
-       35, 0, 1360,
-       36, 0, 1361,
-       37, 0, 1362,
-       38, 0, 43,
-       39, 0, 119,
-       41, 0, 120,
-       43, 0, 121,
-       44, 0, 122,
-       45, 0, 123,
-       46, 0, 124,
-       48, 0, 403,
-       49, 0, 125,
-       51, 0, 49,
-       52, 0, 1363,
-       53, 0, 1364,
-       55, 0, 1747,
-       57, 0, 638,
-       77, 0, 1366,
-       78, 0, 1367,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 1368,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       98, 0, 90,
-       99, 0, 391,
-       100, 0, 1369,
-       102, 0, 131,
-       103, 0, 132,
-       104, 0, 133,
-       105, 0, 59,
-       108, 0, 134
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1680[] = {
-       1,
-       -1, 1, 128
+       3,
+       -1, 3, 1679,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1681[] = {
-       6,
-       -1, 3, 1680,
-       32, 0, 1751,
-       48, 0, 1752,
-       55, 0, 1753,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 1008
 };
 static int parser_action_row1682[] = {
-       1,
-       -1, 1, 43
+       2,
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1683[] = {
        1,
-       -1, 1, 28
+       -1, 1, 55
 };
 static int parser_action_row1684[] = {
        2,
        -1, 3, 1683,
-       10, 0, 1755
+       10, 0, 2082
 };
 static int parser_action_row1685[] = {
        1,
-       -1, 1, 41
+       -1, 1, 19
 };
 static int parser_action_row1686[] = {
-       4,
-       -1, 1, 127,
-       4, 0, 1007,
-       15, 0, 1008,
-       16, 0, 1756
+       1,
+       -1, 1, 29
 };
 static int parser_action_row1687[] = {
        2,
-       -1, 1, 81,
-       15, 0, 999
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1688[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1689[] = {
-       2,
+       3,
        -1, 3, 1688,
-       16, 0, 1762
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1690[] = {
-       3,
-       -1, 3, 1689,
-       15, 0, 1620,
-       16, 0, 1763
+       1,
+       -1, 1, 1010
 };
 static int parser_action_row1691[] = {
-       4,
-       -1, 1, 81,
-       15, 0, 1765,
-       16, 0, 1766,
-       62, 0, 1767
+       2,
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1692[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 57
 };
 static int parser_action_row1693[] = {
-       3,
-       -1, 1, 127,
-       4, 0, 1007,
-       16, 0, 1771
+       2,
+       -1, 3, 1692,
+       10, 0, 2087
 };
 static int parser_action_row1694[] = {
-       3,
-       -1, 3, 1693,
-       29, 0, 84,
-       112, 0, 85
+       1,
+       -1, 1, 18
 };
 static int parser_action_row1695[] = {
        1,
-       -1, 1, 54
+       -1, 1, 28
 };
 static int parser_action_row1696[] = {
-       4,
-       -1, 1, 127,
-       4, 0, 1007,
-       15, 0, 1008,
-       16, 0, 1774
+       2,
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1697[] = {
-       1,
-       -1, 1, 82
-};
-static int parser_action_row1698[] = {
-       4,
-       -1, 1, 495,
+       35,
+       -1, 1, 944,
        0, 0, 1,
        1, 0, 2,
-       98, 0, 3
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1698[] = {
+       3,
+       -1, 3, 1697,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1699[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       1,
+       -1, 1, 1009
 };
 static int parser_action_row1700[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1701[] = {
-       2,
-       -1, 1, 81,
-       15, 0, 999
+       1,
+       -1, 1, 56
 };
 static int parser_action_row1702[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1701,
+       10, 0, 2092
 };
 static int parser_action_row1703[] = {
-       2,
-       -1, 1, 432,
-       97, 0, 204
+       1,
+       -1, 1, 20
 };
 static int parser_action_row1704[] = {
        1,
-       -1, 1, 686
+       -1, 1, 30
 };
 static int parser_action_row1705[] = {
-       1,
-       -1, 1, 705
+       2,
+       -1, 1, 955,
+       10, 0, 1248
 };
 static int parser_action_row1706[] = {
-       1,
-       -1, 1, 677
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1707[] = {
-       1,
-       -1, 1, 696
+       3,
+       -1, 3, 1706,
+       29, 0, 96,
+       113, 0, 97
 };
 static int parser_action_row1708[] = {
        1,
-       -1, 1, 689
+       -1, 1, 1011
 };
 static int parser_action_row1709[] = {
-       1,
-       -1, 1, 708
+       2,
+       -1, 1, 102,
+       100, 0, 1470
 };
 static int parser_action_row1710[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 58
 };
 static int parser_action_row1711[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1710,
+       10, 0, 2097
 };
 static int parser_action_row1712[] = {
-       15,
-       -1, 1, 764,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1786,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       2,
+       -1, 1, 525,
+       25, 1, 1603
 };
 static int parser_action_row1713[] = {
-       2,
-       -1, 3, 1712,
-       101, 0, 1789
+       3,
+       -1, 1, 486,
+       25, 1, 1569,
+       50, 1, 1673
 };
 static int parser_action_row1714[] = {
-       22,
-       -1, 1, 465,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       100, 0, 1790
+       32,
+       -1, 1, 944,
+       10, 0, 2098,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1715[] = {
        1,
-       -1, 1, 820
+       -1, 1, 1615
 };
 static int parser_action_row1716[] = {
-       23,
-       -1, 1, 467,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       99, 0, 54,
-       100, 0, 1791
+       1,
+       -1, 1, 1570
 };
 static int parser_action_row1717[] = {
-       1,
-       -1, 1, 694
+       2,
+       -1, 3, 1716,
+       50, 0, 263
 };
 static int parser_action_row1718[] = {
-       1,
-       -1, 1, 713
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1719[] = {
        1,
-       -1, 1, 693
+       -1, 1, 615
 };
 static int parser_action_row1720[] = {
-       1,
-       -1, 1, 712
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1721[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       32,
+       -1, 1, 944,
+       10, 0, 2098,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1722[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1619
 };
 static int parser_action_row1723[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1722,
+       50, 0, 263
 };
 static int parser_action_row1724[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 1723,
+       55, 0, 462,
+       101, 0, 463
 };
 static int parser_action_row1725[] = {
-       13,
-       -1, 1, 775,
-       62, 0, 1797,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       2,
+       -1, 1, 496,
+       25, 1, 1574
 };
 static int parser_action_row1726[] = {
        2,
-       -1, 3, 1725,
-       56, 0, 1799
+       -1, 1, 502,
+       25, 1, 1580
 };
 static int parser_action_row1727[] = {
-       1,
-       -1, 1, 715
+       2,
+       -1, 1, 499,
+       25, 1, 1577
 };
 static int parser_action_row1728[] = {
-       2,
-       -1, 3, 1727,
-       56, 0, 1800
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1729[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1413,
-       13, 0, 913,
-       16, 0, 914,
-       17, 0, 34,
-       23, 0, 915,
-       26, 0, 917,
-       27, 0, 918,
-       28, 0, 919,
-       34, 0, 920,
-       35, 0, 921,
-       36, 0, 922,
-       37, 0, 923,
-       38, 0, 924,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 925,
-       52, 0, 926,
-       53, 0, 927,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 928,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 637,
+       25, 0, 2107
 };
 static int parser_action_row1730[] = {
-       2,
-       -1, 1, 277,
-       25, 1, 956
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 534,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1731[] = {
-       2,
-       -1, 1, 279,
-       25, 1, 958
+       4,
+       -1, 3, 1730,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
 };
 static int parser_action_row1732[] = {
        2,
-       -1, 1, 284,
-       25, 1, 960
+       -1, 1, 497,
+       25, 1, 1575
 };
 static int parser_action_row1733[] = {
        2,
-       -1, 1, 202,
-       25, 1, 944
+       -1, 1, 518,
+       25, 1, 1596
 };
 static int parser_action_row1734[] = {
-       2,
-       -1, 1, 192,
-       25, 1, 934
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1735[] = {
-       1,
-       -1, 1, 295
+       2,
+       -1, 3, 1734,
+       76, 0, 2111
 };
 static int parser_action_row1736[] = {
-       2,
-       -1, 1, 415,
-       97, 0, 204
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 740,
+       76, 1, 740,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 740,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1737[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1738[] = {
-       3,
-       -1, 1, 611,
-       55, 0, 277,
-       61, 0, 216
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 734,
+       62, 0, 619,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 734,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 734,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1739[] = {
-       2,
-       -1, 3, 1738,
-       100, 0, 1805
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1740[] = {
        3,
        -1, 3, 1739,
-       99, 0, 54,
-       100, 0, 1806
+       10, 0, 939,
+       25, 0, 2116
 };
 static int parser_action_row1741[] = {
-       2,
-       -1, 1, 583,
-       76, 1, 586
+       4,
+       -1, 3, 1740,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
 };
 static int parser_action_row1742[] = {
        1,
-       -1, 1, 538
+       -1, 1, 619
 };
 static int parser_action_row1743[] = {
-       3,
-       -1, 1, 497,
+       35,
+       -1, 1, 944,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1744[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1745[] = {
-       1,
-       -1, 1, 592
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 738,
+       61, 0, 282,
+       62, 0, 624,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 738,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 738,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
 };
 static int parser_action_row1746[] = {
-       1,
-       -1, 1, 600
+       3,
+       -1, 1, 942,
+       13, 0, 2122,
+       101, 0, 2123
 };
 static int parser_action_row1747[] = {
-       2,
-       -1, 1, 598,
-       55, 0, 277
+       1,
+       -1, 1, 623
 };
 static int parser_action_row1748[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 933
 };
 static int parser_action_row1749[] = {
-       4,
-       -1, 3, 1748,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       1,
+       -1, 1, 625
 };
 static int parser_action_row1750[] = {
        1,
-       -1, 1, 425
+       -1, 1, 628
 };
 static int parser_action_row1751[] = {
-       4,
-       -1, 3, 1750,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+       1,
+       -1, 1, 629
 };
 static int parser_action_row1752[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1753[] = {
-       3,
-       -1, 1, 138,
-       99, 0, 391,
-       100, 0, 392
+       4,
+       -1, 1, 684,
+       57, 1, 712,
+       76, 1, 712,
+       97, 1, 712
 };
 static int parser_action_row1754[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 3, 1753,
+       102, 0, 2125
 };
 static int parser_action_row1755[] = {
-       1,
-       -1, 1, 136
+       4,
+       -1, 1, 687,
+       57, 1, 715,
+       76, 1, 715,
+       97, 1, 715
 };
 static int parser_action_row1756[] = {
-       1,
-       -1, 1, 29
+       5,
+       -1, 1, 690,
+       55, 0, 370,
+       57, 1, 718,
+       76, 1, 718,
+       97, 1, 718
 };
 static int parser_action_row1757[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       6,
+       -1, 1, 694,
+       55, 0, 370,
+       57, 1, 722,
+       61, 0, 282,
+       76, 1, 722,
+       97, 1, 722
 };
 static int parser_action_row1758[] = {
-       3,
-       -1, 1, 127,
-       4, 0, 1007,
-       16, 0, 1817
+       2,
+       -1, 1, 942,
+       101, 0, 2128
 };
 static int parser_action_row1759[] = {
-       3,
-       -1, 3, 1758,
-       29, 0, 84,
-       112, 0, 85
+       6,
+       -1, 1, 696,
+       55, 0, 370,
+       57, 1, 724,
+       61, 0, 282,
+       76, 1, 724,
+       97, 1, 724
 };
 static int parser_action_row1760[] = {
-       1,
-       -1, 1, 51
+       2,
+       -1, 1, 941,
+       101, 0, 2130
 };
 static int parser_action_row1761[] = {
-       1,
-       -1, 1, 72
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 2131
 };
 static int parser_action_row1762[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       1,
+       -1, 1, 717
 };
 static int parser_action_row1763[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 721
 };
 static int parser_action_row1764[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 720,
+       55, 0, 370
 };
 static int parser_action_row1765[] = {
-       2,
-       -1, 3, 1764,
-       16, 0, 1823
+       1,
+       -1, 1, 723
 };
 static int parser_action_row1766[] = {
-       5,
-       -1, 1, 30,
-       0, 0, 88,
-       1, 0, 89,
-       14, 0, 32,
-       98, 0, 90
+       1,
+       -1, 1, 713
 };
 static int parser_action_row1767[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 726,
+       55, 0, 370
 };
 static int parser_action_row1768[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 730,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1769[] = {
-       1,
-       -1, 1, 62
+       2,
+       -1, 1, 942,
+       101, 0, 2136
 };
 static int parser_action_row1770[] = {
-       2,
-       -1, 3, 1769,
-       16, 0, 1828
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1771[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1772[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1766
 };
 static int parser_action_row1773[] = {
-       3,
-       -1, 3, 1772,
-       29, 0, 84,
-       112, 0, 85
+       2,
+       -1, 1, 479,
+       59, 0, 1770
 };
 static int parser_action_row1774[] = {
-       1,
-       -1, 1, 73
+       2,
+       -1, 3, 1773,
+       58, 0, 2140
 };
 static int parser_action_row1775[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 3, 1774,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1776[] = {
-       3,
-       -1, 1, 127,
-       4, 0, 1007,
-       16, 0, 1833
+       4,
+       -1, 3, 1775,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1777[] = {
-       3,
+       4,
        -1, 3, 1776,
-       29, 0, 84,
-       112, 0, 85
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1778[] = {
-       1,
-       -1, 1, 55
+       4,
+       -1, 3, 1777,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
 };
 static int parser_action_row1779[] = {
-       5,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       16, 1, 83,
-       98, 0, 3
+       1,
+       -1, 1, 1443
 };
 static int parser_action_row1780[] = {
-       1,
-       -1, 1, 52
+       2,
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1781[] = {
        2,
-       -1, 1, 479,
-       10, 0, 1350
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1782[] = {
-       1,
-       -1, 1, 44
+       2,
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1783[] = {
-       1,
-       -1, 1, 1038
+       2,
+       -1, 1, 1437,
+       98, 0, 813
 };
 static int parser_action_row1784[] = {
-       1,
-       -1, 1, 433
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1785[] = {
        1,
-       -1, 1, 688
+       -1, 1, 748
 };
 static int parser_action_row1786[] = {
-       1,
-       -1, 1, 707
+       2,
+       -1, 1, 751,
+       55, 0, 370
 };
 static int parser_action_row1787[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 755,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1788[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 3, 1787,
+       101, 0, 2152
 };
 static int parser_action_row1789[] = {
-       13,
-       -1, 1, 763,
-       62, 0, 1839,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1790[] = {
-       13,
-       -1, 1, 761,
-       62, 0, 1841,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 807
 };
 static int parser_action_row1791[] = {
-       14,
-       -1, 1, 766,
-       55, 0, 277,
-       62, 0, 1843,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1792[] = {
-       15,
-       -1, 1, 770,
-       55, 0, 277,
-       61, 0, 216,
-       62, 0, 1846,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 809
 };
 static int parser_action_row1793[] = {
-       22,
-       -1, 1, 466,
-       57, 0, 638,
-       77, 0, 639,
-       78, 0, 640,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 641,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       100, 0, 1849
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1794[] = {
        1,
-       -1, 1, 692
+       -1, 1, 808
 };
 static int parser_action_row1795[] = {
-       1,
-       -1, 1, 711
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1796[] = {
        1,
-       -1, 1, 691
+       -1, 1, 810
 };
 static int parser_action_row1797[] = {
-       1,
-       -1, 1, 710
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1798[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1799[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1800[] = {
-       1,
-       -1, 1, 375
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1801[] = {
-       1,
-       -1, 1, 795
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1802[] = {
        1,
-       -1, 1, 953
+       -1, 1, 798
 };
 static int parser_action_row1803[] = {
-       1,
-       -1, 1, 421
+       2,
+       -1, 3, 1802,
+       56, 0, 2162
 };
 static int parser_action_row1804[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1805[] = {
        1,
-       -1, 1, 610
+       -1, 1, 1778
 };
 static int parser_action_row1806[] = {
        2,
-       -1, 1, 613,
-       55, 0, 277
+       -1, 1, 911,
+       59, 0, 1803
 };
 static int parser_action_row1807[] = {
-       3,
-       -1, 1, 617,
-       55, 0, 277,
-       61, 0, 216
+       1,
+       -1, 1, 632
 };
 static int parser_action_row1808[] = {
-       2,
-       -1, 3, 1807,
-       100, 0, 1855
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1809[] = {
-       2,
-       -1, 3, 1808,
-       46, 0, 1856
+       1,
+       -1, 1, 630
 };
 static int parser_action_row1810[] = {
-       5,
-       -1, 3, 1809,
-       32, 0, 1857,
-       48, 0, 403,
-       99, 0, 391,
-       100, 0, 392
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1811[] = {
-       1,
-       -1, 1, 596
+       2,
+       -1, 3, 1810,
+       58, 0, 2167
 };
 static int parser_action_row1812[] = {
-       54,
-       -1, 1, 468,
-       13, 0, 170,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 171,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       32, 0, 172,
-       34, 0, 407,
-       35, 0, 408,
-       36, 0, 409,
-       37, 0, 410,
-       38, 0, 43,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       48, 0, 403,
-       49, 0, 175,
-       51, 0, 49,
-       52, 0, 411,
-       53, 0, 412,
-       55, 0, 52,
-       57, 0, 413,
-       77, 0, 414,
-       78, 0, 415,
-       79, 0, 416,
-       80, 0, 417,
-       81, 0, 418,
-       82, 0, 419,
-       83, 0, 420,
-       84, 0, 421,
-       85, 0, 422,
-       86, 0, 423,
-       87, 0, 424,
-       88, 0, 425,
-       89, 0, 426,
-       90, 0, 427,
-       91, 0, 428,
-       92, 0, 429,
-       93, 0, 430,
-       94, 0, 431,
-       95, 0, 432,
-       97, 0, 204,
-       99, 0, 391,
-       100, 0, 433,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1693
 };
 static int parser_action_row1813[] = {
-       1,
-       -1, 1, 426
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1814[] = {
-       1,
-       -1, 1, 429
+       14,
+       -1, 1, 718,
+       55, 0, 370,
+       62, 0, 2168,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1815[] = {
-       2,
-       -1, 3, 1814,
-       48, 0, 1860
+       15,
+       -1, 1, 722,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 2169,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1816[] = {
-       5,
-       -1, 3, 1815,
-       32, 0, 1861,
-       48, 0, 1862,
-       99, 0, 391,
-       100, 0, 392
+       22,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 2170
 };
 static int parser_action_row1817[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       15,
+       -1, 1, 724,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 2171,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
 };
 static int parser_action_row1818[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       22,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 2172
 };
 static int parser_action_row1819[] = {
-       3,
-       -1, 3, 1818,
-       29, 0, 84,
-       112, 0, 85
+       1,
+       -1, 1, 917
 };
 static int parser_action_row1820[] = {
-       1,
-       -1, 1, 60
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 2173
 };
 static int parser_action_row1821[] = {
-       1,
-       -1, 1, 68
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1822[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 588,
+       28, 0, 589,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1823[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
 };
 static int parser_action_row1824[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 1166,
+       55, 0, 370
 };
 static int parser_action_row1825[] = {
-       2,
-       -1, 1, 79,
-       16, 1, 82
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1826[] = {
-       4,
-       -1, 1, 495,
+       3,
+       -1, 1, 973,
        0, 0, 1,
-       1, 0, 2,
-       98, 0, 3
+       1, 0, 2
 };
 static int parser_action_row1827[] = {
-       2,
-       -1, 1, 64,
-       10, 0, 1871
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1828[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1829[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1830[] = {
-       1,
-       -1, 1, 56
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1831[] = {
        2,
-       -1, 1, 479,
-       10, 0, 1350
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1832[] = {
-       1,
-       -1, 1, 75
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1833[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       16,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 2187,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       55, 0, 65,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1834[] = {
-       34,
-       -1, 1, 468,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 602,
-       13, 0, 31,
-       16, 0, 33,
-       17, 0, 34,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       34, 0, 39,
-       35, 0, 40,
-       36, 0, 41,
-       37, 0, 42,
-       38, 0, 43,
-       39, 0, 44,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       51, 0, 49,
-       52, 0, 50,
-       53, 0, 51,
-       55, 0, 52,
-       57, 0, 53,
-       98, 0, 3,
-       99, 0, 54,
-       100, 0, 55,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1835[] = {
-       3,
-       -1, 3, 1834,
-       29, 0, 84,
-       112, 0, 85
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1836[] = {
-       1,
-       -1, 1, 74
+       16,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 2187,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       55, 0, 65,
+       100, 0, 67,
+       101, 0, 2192,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1837[] = {
-       1,
-       -1, 1, 53
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
 };
 static int parser_action_row1838[] = {
-       1,
-       -1, 1, 679
+       3,
+       -1, 1, 1140,
+       55, 0, 370,
+       61, 0, 282
 };
 static int parser_action_row1839[] = {
-       1,
-       -1, 1, 698
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1840[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1841[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1842[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       2,
+       -1, 1, 800,
+       98, 0, 270
 };
 static int parser_action_row1843[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1193
 };
 static int parser_action_row1844[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       1,
+       -1, 1, 1189
 };
 static int parser_action_row1845[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 3, 1844,
+       42, 0, 2202,
+       102, 0, 2203
 };
 static int parser_action_row1846[] = {
-       13,
-       -1, 1, 765,
-       62, 0, 1884,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       2,
+       -1, 1, 941,
+       101, 0, 2204
 };
 static int parser_action_row1847[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1848[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+       4,
+       -1, 1, 1060,
+       30, 0, 2206,
+       31, 0, 2207,
+       33, 0, 2208
 };
 static int parser_action_row1849[] = {
-       13,
-       -1, 1, 769,
-       62, 0, 1888,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1062
 };
 static int parser_action_row1850[] = {
-       14,
-       -1, 1, 768,
-       55, 0, 277,
-       62, 0, 1890,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+       1,
+       -1, 1, 1067
 };
 static int parser_action_row1851[] = {
-       1,
-       -1, 1, 690
+       10,
+       -1, 1, 1069,
+       40, 0, 2209,
+       83, 0, 2210,
+       87, 0, 2211,
+       88, 0, 2212,
+       89, 0, 2213,
+       90, 0, 2214,
+       92, 0, 2215,
+       93, 0, 2216,
+       95, 0, 2217
 };
 static int parser_action_row1852[] = {
-       1,
-       -1, 1, 709
+       2,
+       -1, 1, 1078,
+       84, 0, 2218
 };
 static int parser_action_row1853[] = {
        2,
-       -1, 3, 1852,
-       25, 0, 1893
+       -1, 1, 1080,
+       85, 0, 2219
 };
 static int parser_action_row1854[] = {
-       1,
-       -1, 1, 612
+       3,
+       -1, 1, 1082,
+       91, 0, 2220,
+       94, 0, 2221
 };
 static int parser_action_row1855[] = {
-       1,
-       -1, 1, 616
+       3,
+       -1, 1, 1084,
+       77, 0, 2222,
+       78, 0, 2223
 };
 static int parser_action_row1856[] = {
-       2,
-       -1, 1, 615,
-       55, 0, 277
+       4,
+       -1, 1, 1087,
+       79, 0, 2224,
+       81, 0, 2225,
+       82, 0, 2226
 };
 static int parser_action_row1857[] = {
        1,
-       -1, 1, 620
+       -1, 1, 1090
 };
 static int parser_action_row1858[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       2,
+       -1, 1, 1094,
+       80, 0, 2227
 };
 static int parser_action_row1859[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       1,
+       -1, 1, 1096
 };
 static int parser_action_row1860[] = {
-       2,
-       -1, 3, 1859,
-       56, 0, 1897
+       3,
+       -1, 1, 1101,
+       76, 0, 2228,
+       97, 0, 2229
 };
 static int parser_action_row1861[] = {
        1,
-       -1, 1, 140
+       -1, 1, 1131
 };
 static int parser_action_row1862[] = {
        3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 2230
 };
 static int parser_action_row1863[] = {
-       5,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2,
-       99, 0, 391,
-       100, 0, 392
+       1,
+       -1, 1, 785
 };
 static int parser_action_row1864[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row1865[] = {
-       1,
-       -1, 1, 49
+       2,
+       -1, 1, 483,
+       60, 0, 439
 };
 static int parser_action_row1866[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
 };
 static int parser_action_row1867[] = {
-       1,
-       -1, 1, 61
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
 static int parser_action_row1868[] = {
        1,
-       -1, 1, 70
+       -1, 1, 1756
 };
 static int parser_action_row1869[] = {
-       1,
-       -1, 1, 69
+       2,
+       -1, 1, 101,
+       59, 0, 1866
 };
 static int parser_action_row1870[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2238
 };
 static int parser_action_row1871[] = {
-       6,
-       -1, 1, 495,
-       0, 0, 1,
-       1, 0, 2,
-       10, 0, 1481,
-       16, 1, 83,
-       98, 0, 3
+       2,
+       -1, 1, 404,
+       15, 0, 647
 };
 static int parser_action_row1872[] = {
-       1,
-       -1, 1, 66
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
 };
 static int parser_action_row1873[] = {
        2,
-       -1, 1, 81,
-       15, 0, 999
+       -1, 3, 1872,
+       16, 0, 2244
+};
+static int parser_action_row1874[] = {
+       3,
+       -1, 3, 1873,
+       15, 0, 1496,
+       16, 0, 2245
+};
+static int parser_action_row1875[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row1876[] = {
+       2,
+       -1, 3, 1875,
+       60, 0, 139
+};
+static int parser_action_row1877[] = {
+       3,
+       -1, 3, 1876,
+       15, 0, 1496,
+       16, 0, 2249
+};
+static int parser_action_row1878[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row1879[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row1880[] = {
+       8,
+       -1, 3, 1879,
+       11, 0, 2253,
+       12, 0, 2254,
+       13, 0, 2255,
+       17, 0, 2256,
+       39, 0, 2257,
+       40, 0, 2258,
+       42, 0, 2259
+};
+static int parser_action_row1881[] = {
+       8,
+       -1, 3, 1880,
+       11, 0, 2260,
+       12, 0, 2261,
+       13, 0, 2262,
+       17, 0, 2263,
+       39, 0, 2264,
+       40, 0, 2265,
+       42, 0, 2266
+};
+static int parser_action_row1882[] = {
+       8,
+       -1, 3, 1881,
+       11, 0, 2267,
+       12, 0, 2268,
+       13, 0, 2269,
+       17, 0, 2270,
+       39, 0, 2271,
+       40, 0, 2272,
+       42, 0, 2273
+};
+static int parser_action_row1883[] = {
+       8,
+       -1, 3, 1882,
+       11, 0, 2274,
+       12, 0, 2275,
+       13, 0, 2276,
+       17, 0, 2277,
+       39, 0, 2278,
+       40, 0, 2279,
+       42, 0, 2280
+};
+static int parser_action_row1884[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2281
+};
+static int parser_action_row1885[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row1886[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1887[] = {
+       2,
+       -1, 3, 1886,
+       16, 0, 2287
+};
+static int parser_action_row1888[] = {
+       4,
+       -1, 3, 1887,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1889[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 2290,
+       62, 0, 2291
+};
+static int parser_action_row1890[] = {
+       23,
+       -1, 3, 1889,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1891[] = {
+       3,
+       -1, 3, 1890,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1892[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1893[] = {
+       2,
+       -1, 3, 1892,
+       101, 0, 2298
+};
+static int parser_action_row1894[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1895[] = {
+       3,
+       -1, 3, 1894,
+       15, 0, 1496,
+       16, 0, 2301
+};
+static int parser_action_row1896[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1897[] = {
+       23,
+       -1, 3, 1896,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1898[] = {
+       3,
+       -1, 3, 1897,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1899[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1900[] = {
+       2,
+       -1, 3, 1899,
+       101, 0, 2308
+};
+static int parser_action_row1901[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1902[] = {
+       3,
+       -1, 3, 1901,
+       15, 0, 1496,
+       16, 0, 2311
+};
+static int parser_action_row1903[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1904[] = {
+       23,
+       -1, 3, 1903,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1905[] = {
+       3,
+       -1, 3, 1904,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1906[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1907[] = {
+       2,
+       -1, 3, 1906,
+       101, 0, 2318
+};
+static int parser_action_row1908[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1909[] = {
+       3,
+       -1, 3, 1908,
+       15, 0, 1496,
+       16, 0, 2321
+};
+static int parser_action_row1910[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1911[] = {
+       23,
+       -1, 3, 1910,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1912[] = {
+       3,
+       -1, 3, 1911,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1913[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1914[] = {
+       2,
+       -1, 3, 1913,
+       101, 0, 2328
+};
+static int parser_action_row1915[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row1916[] = {
+       3,
+       -1, 3, 1915,
+       15, 0, 1496,
+       16, 0, 2331
+};
+static int parser_action_row1917[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1918[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1919[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2335
+};
+static int parser_action_row1920[] = {
+       3,
+       -1, 3, 1919,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row1921[] = {
+       1,
+       -1, 1, 170
+};
+static int parser_action_row1922[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2338
+};
+static int parser_action_row1923[] = {
+       1,
+       -1, 1, 405
+};
+static int parser_action_row1924[] = {
+       5,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       16, 1, 407,
+       99, 0, 3
+};
+static int parser_action_row1925[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row1926[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1927[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row1928[] = {
+       1,
+       -1, 1, 1697
+};
+static int parser_action_row1929[] = {
+       1,
+       -1, 1, 1703
+};
+static int parser_action_row1930[] = {
+       1,
+       -1, 1, 1700
+};
+static int parser_action_row1931[] = {
+       4,
+       -1, 3, 1930,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1932[] = {
+       1,
+       -1, 1, 1698
+};
+static int parser_action_row1933[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1934[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1935[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1936[] = {
+       13,
+       -1, 1, 1391,
+       62, 0, 2350,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1937[] = {
+       13,
+       -1, 1, 1374,
+       62, 0, 2352,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1938[] = {
+       14,
+       -1, 1, 1394,
+       55, 0, 370,
+       62, 0, 2354,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1939[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1940[] = {
+       2,
+       -1, 3, 1939,
+       76, 0, 2358
+};
+static int parser_action_row1941[] = {
+       13,
+       -1, 1, 1407,
+       62, 0, 2359,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1942[] = {
+       2,
+       -1, 1, 1459,
+       59, 0, 1803
+};
+static int parser_action_row1943[] = {
+       15,
+       -1, 1, 1398,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 2361,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1944[] = {
+       23,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 1114,
+       101, 0, 2364
+};
+static int parser_action_row1945[] = {
+       2,
+       -1, 3, 1944,
+       46, 0, 2365
+};
+static int parser_action_row1946[] = {
+       5,
+       -1, 3, 1945,
+       32, 0, 2366,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row1947[] = {
+       1,
+       -1, 1, 545
+};
+static int parser_action_row1948[] = {
+       1,
+       -1, 1, 573
+};
+static int parser_action_row1949[] = {
+       1,
+       -1, 1, 542
+};
+static int parser_action_row1950[] = {
+       1,
+       -1, 1, 570
+};
+static int parser_action_row1951[] = {
+       1,
+       -1, 1, 548
+};
+static int parser_action_row1952[] = {
+       1,
+       -1, 1, 576
+};
+static int parser_action_row1953[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1954[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1955[] = {
+       1,
+       -1, 1, 552
+};
+static int parser_action_row1956[] = {
+       1,
+       -1, 1, 580
+};
+static int parser_action_row1957[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1958[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1959[] = {
+       1,
+       -1, 1, 527
+};
+static int parser_action_row1960[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1961[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1962[] = {
+       13,
+       -1, 1, 719,
+       62, 0, 2374,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1963[] = {
+       1,
+       -1, 1, 512
+};
+static int parser_action_row1964[] = {
+       1,
+       -1, 1, 554
+};
+static int parser_action_row1965[] = {
+       1,
+       -1, 1, 582
+};
+static int parser_action_row1966[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1967[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1968[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1969[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1970[] = {
+       1,
+       -1, 1, 529
+};
+static int parser_action_row1971[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1972[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1973[] = {
+       13,
+       -1, 1, 725,
+       62, 0, 2382,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1974[] = {
+       1,
+       -1, 1, 515
+};
+static int parser_action_row1975[] = {
+       1,
+       -1, 1, 531
+};
+static int parser_action_row1976[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1977[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1978[] = {
+       13,
+       -1, 1, 729,
+       62, 0, 2386,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row1979[] = {
+       1,
+       -1, 1, 517
+};
+static int parser_action_row1980[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1981[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 728,
+       62, 0, 2389,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 728,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 728,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1982[] = {
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 2393,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1983[] = {
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 2396,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1984[] = {
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 2399,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1985[] = {
+       13,
+       -1, 1, 800,
+       11, 0, 167,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       55, 0, 2402,
+       98, 0, 270,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row1986[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row1987[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1988[] = {
+       1,
+       -1, 1, 824
+};
+static int parser_action_row1989[] = {
+       1,
+       -1, 1, 844
+};
+static int parser_action_row1990[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1991[] = {
+       1,
+       -1, 1, 826
+};
+static int parser_action_row1992[] = {
+       1,
+       -1, 1, 846
+};
+static int parser_action_row1993[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1994[] = {
+       1,
+       -1, 1, 825
+};
+static int parser_action_row1995[] = {
+       1,
+       -1, 1, 845
+};
+static int parser_action_row1996[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1997[] = {
+       1,
+       -1, 1, 827
+};
+static int parser_action_row1998[] = {
+       1,
+       -1, 1, 847
+};
+static int parser_action_row1999[] = {
+       1,
+       -1, 1, 854
+};
+static int parser_action_row2000[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2001[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2002[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2003[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2004[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2005[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2415,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2006[] = {
+       4,
+       -1, 3, 2005,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2007[] = {
+       4,
+       -1, 3, 2006,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2008[] = {
+       4,
+       -1, 3, 2007,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2009[] = {
+       4,
+       -1, 3, 2008,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2010[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2011[] = {
+       4,
+       -1, 3, 2010,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2012[] = {
+       1,
+       -1, 1, 855
+};
+static int parser_action_row2013[] = {
+       4,
+       -1, 3, 2012,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2014[] = {
+       1,
+       -1, 1, 772
+};
+static int parser_action_row2015[] = {
+       25,
+       -1, 3, 2014,
+       42, 0, 1239,
+       48, 0, 537,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 517,
+       101, 0, 159
+};
+static int parser_action_row2016[] = {
+       1,
+       -1, 1, 1765
+};
+static int parser_action_row2017[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2018[] = {
+       1,
+       -1, 1, 455
+};
+static int parser_action_row2019[] = {
+       1,
+       -1, 1, 1431
+};
+static int parser_action_row2020[] = {
+       2,
+       -1, 3, 2019,
+       10, 0, 2428
+};
+static int parser_action_row2021[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2022[] = {
+       1,
+       -1, 1, 1408
+};
+static int parser_action_row2023[] = {
+       2,
+       -1, 1, 1411,
+       55, 0, 370
+};
+static int parser_action_row2024[] = {
+       3,
+       -1, 1, 1415,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row2025[] = {
+       2,
+       -1, 3, 2024,
+       101, 0, 2432
+};
+static int parser_action_row2026[] = {
+       4,
+       -1, 1, 1345,
+       57, 1, 1373,
+       76, 1, 1373,
+       97, 1, 1373
+};
+static int parser_action_row2027[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2028[] = {
+       4,
+       -1, 1, 1349,
+       57, 1, 1377,
+       76, 1, 1377,
+       97, 1, 1377
+};
+static int parser_action_row2029[] = {
+       4,
+       -1, 1, 1353,
+       57, 1, 1381,
+       76, 1, 1381,
+       97, 1, 1381
+};
+static int parser_action_row2030[] = {
+       5,
+       -1, 1, 1352,
+       55, 0, 370,
+       57, 1, 1380,
+       76, 1, 1380,
+       97, 1, 1380
+};
+static int parser_action_row2031[] = {
+       4,
+       -1, 1, 1355,
+       57, 1, 1383,
+       76, 1, 1383,
+       97, 1, 1383
+};
+static int parser_action_row2032[] = {
+       5,
+       -1, 1, 1358,
+       55, 0, 370,
+       57, 1, 1386,
+       76, 1, 1386,
+       97, 1, 1386
+};
+static int parser_action_row2033[] = {
+       6,
+       -1, 1, 1362,
+       55, 0, 370,
+       57, 1, 1390,
+       61, 0, 282,
+       76, 1, 1390,
+       97, 1, 1390
+};
+static int parser_action_row2034[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 2437
+};
+static int parser_action_row2035[] = {
+       2,
+       -1, 3, 2034,
+       46, 0, 2438
+};
+static int parser_action_row2036[] = {
+       5,
+       -1, 3, 2035,
+       32, 0, 2439,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2037[] = {
+       1,
+       -1, 1, 1379
+};
+static int parser_action_row2038[] = {
+       1,
+       -1, 1, 1385
+};
+static int parser_action_row2039[] = {
+       1,
+       -1, 1, 1389
+};
+static int parser_action_row2040[] = {
+       2,
+       -1, 1, 1388,
+       55, 0, 370
+};
+static int parser_action_row2041[] = {
+       1,
+       -1, 1, 992
+};
+static int parser_action_row2042[] = {
+       1,
+       -1, 1, 22
+};
+static int parser_action_row2043[] = {
+       1,
+       -1, 1, 32
+};
+static int parser_action_row2044[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2045[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2046[] = {
+       3,
+       -1, 3, 2045,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2047[] = {
+       1,
+       -1, 1, 1013
+};
+static int parser_action_row2048[] = {
+       2,
+       -1, 1, 102,
+       100, 0, 1470
+};
+static int parser_action_row2049[] = {
+       1,
+       -1, 1, 60
+};
+static int parser_action_row2050[] = {
+       2,
+       -1, 3, 2049,
+       10, 0, 2446
+};
+static int parser_action_row2051[] = {
+       1,
+       -1, 1, 24
+};
+static int parser_action_row2052[] = {
+       1,
+       -1, 1, 34
+};
+static int parser_action_row2053[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2054[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2055[] = {
+       3,
+       -1, 3, 2054,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2056[] = {
+       1,
+       -1, 1, 1015
+};
+static int parser_action_row2057[] = {
+       2,
+       -1, 1, 102,
+       100, 0, 1470
+};
+static int parser_action_row2058[] = {
+       1,
+       -1, 1, 62
+};
+static int parser_action_row2059[] = {
+       2,
+       -1, 3, 2058,
+       10, 0, 2451
+};
+static int parser_action_row2060[] = {
+       1,
+       -1, 1, 23
+};
+static int parser_action_row2061[] = {
+       1,
+       -1, 1, 33
+};
+static int parser_action_row2062[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2063[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2064[] = {
+       3,
+       -1, 3, 2063,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2065[] = {
+       1,
+       -1, 1, 1014
+};
+static int parser_action_row2066[] = {
+       2,
+       -1, 1, 102,
+       100, 0, 1470
+};
+static int parser_action_row2067[] = {
+       1,
+       -1, 1, 61
+};
+static int parser_action_row2068[] = {
+       2,
+       -1, 3, 2067,
+       10, 0, 2456
+};
+static int parser_action_row2069[] = {
+       1,
+       -1, 1, 25
+};
+static int parser_action_row2070[] = {
+       1,
+       -1, 1, 35
+};
+static int parser_action_row2071[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2072[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2073[] = {
+       3,
+       -1, 3, 2072,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2074[] = {
+       1,
+       -1, 1, 1016
+};
+static int parser_action_row2075[] = {
+       2,
+       -1, 1, 102,
+       100, 0, 1470
+};
+static int parser_action_row2076[] = {
+       1,
+       -1, 1, 63
+};
+static int parser_action_row2077[] = {
+       2,
+       -1, 3, 2076,
+       10, 0, 2461
+};
+static int parser_action_row2078[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2079[] = {
+       1,
+       -1, 1, 978
+};
+static int parser_action_row2080[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2081[] = {
+       1,
+       -1, 1, 1018
+};
+static int parser_action_row2082[] = {
+       2,
+       -1, 3, 2081,
+       58, 0, 2465
+};
+static int parser_action_row2083[] = {
+       1,
+       -1, 1, 65
+};
+static int parser_action_row2084[] = {
+       1,
+       -1, 1, 980
+};
+static int parser_action_row2085[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2086[] = {
+       1,
+       -1, 1, 1020
+};
+static int parser_action_row2087[] = {
+       2,
+       -1, 3, 2086,
+       58, 0, 2467
+};
+static int parser_action_row2088[] = {
+       1,
+       -1, 1, 67
+};
+static int parser_action_row2089[] = {
+       1,
+       -1, 1, 979
+};
+static int parser_action_row2090[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2091[] = {
+       1,
+       -1, 1, 1019
+};
+static int parser_action_row2092[] = {
+       2,
+       -1, 3, 2091,
+       58, 0, 2469
+};
+static int parser_action_row2093[] = {
+       1,
+       -1, 1, 66
+};
+static int parser_action_row2094[] = {
+       1,
+       -1, 1, 981
+};
+static int parser_action_row2095[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2096[] = {
+       1,
+       -1, 1, 1021
+};
+static int parser_action_row2097[] = {
+       2,
+       -1, 3, 2096,
+       58, 0, 2471
+};
+static int parser_action_row2098[] = {
+       1,
+       -1, 1, 68
+};
+static int parser_action_row2099[] = {
+       3,
+       -1, 1, 485,
+       25, 1, 1568,
+       50, 1, 1672
+};
+static int parser_action_row2100[] = {
+       2,
+       -1, 3, 2099,
+       54, 0, 2472
+};
+static int parser_action_row2101[] = {
+       3,
+       -1, 1, 484,
+       25, 1, 1567,
+       50, 1, 1671
+};
+static int parser_action_row2102[] = {
+       2,
+       -1, 1, 609,
+       25, 1, 1614
+};
+static int parser_action_row2103[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2104[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2105[] = {
+       2,
+       -1, 1, 621,
+       25, 1, 1618
+};
+static int parser_action_row2106[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2107[] = {
+       2,
+       -1, 1, 638,
+       25, 0, 2476
+};
+static int parser_action_row2108[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 2477,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2109[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2110[] = {
+       2,
+       -1, 3, 2109,
+       60, 0, 2481
+};
+static int parser_action_row2111[] = {
+       5,
+       -1, 1, 944,
+       13, 0, 2482,
+       47, 0, 886,
+       100, 0, 67,
+       101, 0, 2483
+};
+static int parser_action_row2112[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2113[] = {
+       2,
+       -1, 1, 522,
+       25, 1, 1600
+};
+static int parser_action_row2114[] = {
+       2,
+       -1, 1, 532,
+       25, 1, 1610
+};
+static int parser_action_row2115[] = {
+       2,
+       -1, 1, 519,
+       25, 1, 1597
+};
+static int parser_action_row2116[] = {
+       1,
+       -1, 1, 616
+};
+static int parser_action_row2117[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2118[] = {
+       1,
+       -1, 1, 617
+};
+static int parser_action_row2119[] = {
+       4,
+       -1, 3, 2118,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2120[] = {
+       1,
+       -1, 1, 612
+};
+static int parser_action_row2121[] = {
+       2,
+       -1, 1, 534,
+       25, 1, 1612
+};
+static int parser_action_row2122[] = {
+       2,
+       -1, 1, 521,
+       25, 1, 1599
+};
+static int parser_action_row2123[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2124[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 736,
+       62, 0, 909,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 736,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 736,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2125[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2126[] = {
+       4,
+       -1, 1, 685,
+       57, 1, 713,
+       76, 1, 713,
+       97, 1, 713
+};
+static int parser_action_row2127[] = {
+       4,
+       -1, 1, 689,
+       57, 1, 717,
+       76, 1, 717,
+       97, 1, 717
+};
+static int parser_action_row2128[] = {
+       4,
+       -1, 1, 693,
+       57, 1, 721,
+       76, 1, 721,
+       97, 1, 721
+};
+static int parser_action_row2129[] = {
+       5,
+       -1, 1, 692,
+       55, 0, 370,
+       57, 1, 720,
+       76, 1, 720,
+       97, 1, 720
+};
+static int parser_action_row2130[] = {
+       4,
+       -1, 1, 695,
+       57, 1, 723,
+       76, 1, 723,
+       97, 1, 723
+};
+static int parser_action_row2131[] = {
+       5,
+       -1, 1, 698,
+       55, 0, 370,
+       57, 1, 726,
+       76, 1, 726,
+       97, 1, 726
+};
+static int parser_action_row2132[] = {
+       6,
+       -1, 1, 702,
+       55, 0, 370,
+       57, 1, 730,
+       61, 0, 282,
+       76, 1, 730,
+       97, 1, 730
+};
+static int parser_action_row2133[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 2494
+};
+static int parser_action_row2134[] = {
+       1,
+       -1, 1, 719
+};
+static int parser_action_row2135[] = {
+       1,
+       -1, 1, 725
+};
+static int parser_action_row2136[] = {
+       1,
+       -1, 1, 729
+};
+static int parser_action_row2137[] = {
+       2,
+       -1, 1, 728,
+       55, 0, 370
+};
+static int parser_action_row2138[] = {
+       2,
+       -1, 3, 2137,
+       58, 0, 2496
+};
+static int parser_action_row2139[] = {
+       4,
+       -1, 3, 2138,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2140[] = {
+       1,
+       -1, 1, 1767
+};
+static int parser_action_row2141[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2142[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2143[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2144[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2145[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2146[] = {
+       1,
+       -1, 1, 1439
+};
+static int parser_action_row2147[] = {
+       1,
+       -1, 1, 1441
+};
+static int parser_action_row2148[] = {
+       1,
+       -1, 1, 1440
+};
+static int parser_action_row2149[] = {
+       1,
+       -1, 1, 1442
+};
+static int parser_action_row2150[] = {
+       2,
+       -1, 3, 2149,
+       56, 0, 2503
+};
+static int parser_action_row2151[] = {
+       1,
+       -1, 1, 750
+};
+static int parser_action_row2152[] = {
+       1,
+       -1, 1, 754
+};
+static int parser_action_row2153[] = {
+       2,
+       -1, 1, 753,
+       55, 0, 370
+};
+static int parser_action_row2154[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2155[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2156[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2157[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2158[] = {
+       2,
+       -1, 3, 2157,
+       56, 0, 2509
+};
+static int parser_action_row2159[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2160[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2161[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2162[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2163[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2164[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2165[] = {
+       1,
+       -1, 1, 1779
+};
+static int parser_action_row2166[] = {
+       1,
+       -1, 1, 633
+};
+static int parser_action_row2167[] = {
+       2,
+       -1, 3, 2166,
+       58, 0, 2516
+};
+static int parser_action_row2168[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2169[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2170[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2171[] = {
+       14,
+       -1, 1, 720,
+       55, 0, 370,
+       62, 0, 2518,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2172[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2173[] = {
+       14,
+       -1, 1, 726,
+       55, 0, 370,
+       62, 0, 2519,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2174[] = {
+       15,
+       -1, 1, 730,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 2520,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2175[] = {
+       22,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 2521
+};
+static int parser_action_row2176[] = {
+       26,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 588,
+       28, 0, 589,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2177[] = {
+       1,
+       -1, 1, 786
+};
+static int parser_action_row2178[] = {
+       2,
+       -1, 3, 2177,
+       16, 0, 2524
+};
+static int parser_action_row2179[] = {
+       1,
+       -1, 1, 1163
+};
+static int parser_action_row2180[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2181[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2182[] = {
+       4,
+       -1, 3, 2181,
+       48, 0, 2527,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2183[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2184[] = {
+       1,
+       -1, 1, 1181
+};
+static int parser_action_row2185[] = {
+       1,
+       -1, 1, 1182
+};
+static int parser_action_row2186[] = {
+       1,
+       -1, 1, 1183
+};
+static int parser_action_row2187[] = {
+       1,
+       -1, 1, 1184
+};
+static int parser_action_row2188[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2189[] = {
+       3,
+       -1, 3, 2188,
+       42, 0, 2202,
+       102, 0, 2532
+};
+static int parser_action_row2190[] = {
+       3,
+       -1, 3, 2189,
+       76, 0, 2533,
+       97, 0, 2534
+};
+static int parser_action_row2191[] = {
+       1,
+       -1, 1, 1098
+};
+static int parser_action_row2192[] = {
+       1,
+       -1, 1, 1097
+};
+static int parser_action_row2193[] = {
+       5,
+       -1, 1, 1112,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1140,
+       97, 1, 1140
+};
+static int parser_action_row2194[] = {
+       2,
+       -1, 1, 941,
+       101, 0, 2536
+};
+static int parser_action_row2195[] = {
+       3,
+       -1, 3, 2194,
+       76, 0, 2537,
+       97, 0, 2538
+};
+static int parser_action_row2196[] = {
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 2539
+};
+static int parser_action_row2197[] = {
+       1,
+       -1, 1, 1099
+};
+static int parser_action_row2198[] = {
+       1,
+       -1, 1, 1137
+};
+static int parser_action_row2199[] = {
+       1,
+       -1, 1, 1185
+};
+static int parser_action_row2200[] = {
+       1,
+       -1, 1, 1186
+};
+static int parser_action_row2201[] = {
+       1,
+       -1, 1, 1188
+};
+static int parser_action_row2202[] = {
+       1,
+       -1, 1, 1187
+};
+static int parser_action_row2203[] = {
+       2,
+       -1, 1, 1160,
+       55, 0, 370
+};
+static int parser_action_row2204[] = {
+       1,
+       -1, 1, 1134
+};
+static int parser_action_row2205[] = {
+       2,
+       -1, 1, 1146,
+       55, 0, 370
+};
+static int parser_action_row2206[] = {
+       3,
+       -1, 3, 2205,
+       57, 0, 2543,
+       58, 0, 2544
+};
+static int parser_action_row2207[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2208[] = {
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       25, 0, 2546
+};
+static int parser_action_row2209[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2210[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2211[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2212[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2213[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2214[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2215[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2216[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2217[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2218[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2219[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2220[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2221[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2222[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2223[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2224[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2225[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2226[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2227[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2228[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2229[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2230[] = {
+       2,
+       -1, 3, 2229,
+       76, 0, 2569
+};
+static int parser_action_row2231[] = {
+       3,
+       -1, 1, 1158,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row2232[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 2571
+};
+static int parser_action_row2233[] = {
+       1,
+       -1, 1, 104
+};
+static int parser_action_row2234[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2235[] = {
+       2,
+       -1, 3, 2234,
+       10, 0, 2573
+};
+static int parser_action_row2236[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2237[] = {
+       2,
+       -1, 3, 2236,
+       100, 0, 1470
+};
+static int parser_action_row2238[] = {
+       1,
+       -1, 1, 1757
+};
+static int parser_action_row2239[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2240[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2577
+};
+static int parser_action_row2241[] = {
+       3,
+       -1, 3, 2240,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2242[] = {
+       1,
+       -1, 1, 140
+};
+static int parser_action_row2243[] = {
+       1,
+       -1, 1, 350
+};
+static int parser_action_row2244[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2245[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2246[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2247[] = {
+       2,
+       -1, 3, 2246,
+       16, 0, 2583
+};
+static int parser_action_row2248[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2584
+};
+static int parser_action_row2249[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2250[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2251[] = {
+       2,
+       -1, 3, 2250,
+       16, 0, 2590
+};
+static int parser_action_row2252[] = {
+       3,
+       -1, 3, 2251,
+       15, 0, 1496,
+       16, 0, 2591
+};
+static int parser_action_row2253[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 2593,
+       62, 0, 2594
+};
+static int parser_action_row2254[] = {
+       23,
+       -1, 3, 2253,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2255[] = {
+       3,
+       -1, 3, 2254,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2256[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2257[] = {
+       2,
+       -1, 3, 2256,
+       101, 0, 2601
+};
+static int parser_action_row2258[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2259[] = {
+       3,
+       -1, 3, 2258,
+       15, 0, 1496,
+       16, 0, 2604
+};
+static int parser_action_row2260[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2261[] = {
+       23,
+       -1, 3, 2260,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2262[] = {
+       3,
+       -1, 3, 2261,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2263[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2264[] = {
+       2,
+       -1, 3, 2263,
+       101, 0, 2611
+};
+static int parser_action_row2265[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2266[] = {
+       3,
+       -1, 3, 2265,
+       15, 0, 1496,
+       16, 0, 2614
+};
+static int parser_action_row2267[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2268[] = {
+       23,
+       -1, 3, 2267,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2269[] = {
+       3,
+       -1, 3, 2268,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2270[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2271[] = {
+       2,
+       -1, 3, 2270,
+       101, 0, 2621
+};
+static int parser_action_row2272[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2273[] = {
+       3,
+       -1, 3, 2272,
+       15, 0, 1496,
+       16, 0, 2624
+};
+static int parser_action_row2274[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2275[] = {
+       23,
+       -1, 3, 2274,
+       57, 0, 138,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2276[] = {
+       3,
+       -1, 3, 2275,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2277[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2278[] = {
+       2,
+       -1, 3, 2277,
+       101, 0, 2631
+};
+static int parser_action_row2279[] = {
+       27,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       57, 0, 138,
+       60, 0, 139,
+       77, 0, 140,
+       78, 0, 141,
+       79, 0, 142,
+       80, 0, 143,
+       81, 0, 144,
+       82, 0, 145,
+       83, 0, 146,
+       84, 0, 147,
+       85, 0, 148,
+       86, 0, 149,
+       87, 0, 150,
+       88, 0, 151,
+       89, 0, 152,
+       90, 0, 153,
+       91, 0, 154,
+       92, 0, 155,
+       93, 0, 156,
+       94, 0, 157,
+       95, 0, 158,
+       100, 0, 67,
+       101, 0, 159
+};
+static int parser_action_row2280[] = {
+       3,
+       -1, 3, 2279,
+       15, 0, 1496,
+       16, 0, 2634
+};
+static int parser_action_row2281[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2282[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2283[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2638
+};
+static int parser_action_row2284[] = {
+       3,
+       -1, 3, 2283,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2285[] = {
+       1,
+       -1, 1, 175
+};
+static int parser_action_row2286[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2641
+};
+static int parser_action_row2287[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2288[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2289[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2290[] = {
+       12,
+       -1, 3, 2289,
+       0, 0, 100,
+       1, 0, 101,
+       6, 0, 523,
+       14, 0, 920,
+       18, 0, 525,
+       19, 0, 921,
+       20, 0, 922,
+       21, 0, 923,
+       22, 0, 924,
+       99, 0, 102,
+       101, 0, 531
+};
+static int parser_action_row2291[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2292[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2293[] = {
+       1,
+       -1, 1, 250
+};
+static int parser_action_row2294[] = {
+       2,
+       -1, 3, 2293,
+       16, 0, 2652
+};
+static int parser_action_row2295[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2296[] = {
+       2,
+       -1, 3, 2295,
+       60, 0, 139
+};
+static int parser_action_row2297[] = {
+       3,
+       -1, 3, 2296,
+       15, 0, 1496,
+       16, 0, 2655
+};
+static int parser_action_row2298[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2299[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2300[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2659
+};
+static int parser_action_row2301[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2302[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2303[] = {
+       2,
+       -1, 3, 2302,
+       16, 0, 2665
+};
+static int parser_action_row2304[] = {
+       4,
+       -1, 3, 2303,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2305[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2306[] = {
+       2,
+       -1, 3, 2305,
+       60, 0, 139
+};
+static int parser_action_row2307[] = {
+       3,
+       -1, 3, 2306,
+       15, 0, 1496,
+       16, 0, 2669
+};
+static int parser_action_row2308[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2309[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2310[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2673
+};
+static int parser_action_row2311[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2312[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2313[] = {
+       2,
+       -1, 3, 2312,
+       16, 0, 2679
+};
+static int parser_action_row2314[] = {
+       4,
+       -1, 3, 2313,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2315[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2316[] = {
+       2,
+       -1, 3, 2315,
+       60, 0, 139
+};
+static int parser_action_row2317[] = {
+       3,
+       -1, 3, 2316,
+       15, 0, 1496,
+       16, 0, 2683
+};
+static int parser_action_row2318[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2319[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2320[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2687
+};
+static int parser_action_row2321[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2322[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2323[] = {
+       2,
+       -1, 3, 2322,
+       16, 0, 2693
+};
+static int parser_action_row2324[] = {
+       4,
+       -1, 3, 2323,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2325[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2326[] = {
+       2,
+       -1, 3, 2325,
+       60, 0, 139
+};
+static int parser_action_row2327[] = {
+       3,
+       -1, 3, 2326,
+       15, 0, 1496,
+       16, 0, 2697
+};
+static int parser_action_row2328[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2329[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2330[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2701
+};
+static int parser_action_row2331[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2332[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2333[] = {
+       2,
+       -1, 3, 2332,
+       16, 0, 2707
+};
+static int parser_action_row2334[] = {
+       4,
+       -1, 3, 2333,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2335[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2336[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2337[] = {
+       3,
+       -1, 3, 2336,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2338[] = {
+       1,
+       -1, 1, 360
+};
+static int parser_action_row2339[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2340[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2713
+};
+static int parser_action_row2341[] = {
+       3,
+       -1, 3, 2340,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2342[] = {
+       1,
+       -1, 1, 180
+};
+static int parser_action_row2343[] = {
+       1,
+       -1, 1, 406
+};
+static int parser_action_row2344[] = {
+       1,
+       -1, 1, 150
+};
+static int parser_action_row2345[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2346[] = {
+       1,
+       -1, 1, 106
+};
+static int parser_action_row2347[] = {
+       2,
+       -1, 3, 2346,
+       60, 0, 2717
+};
+static int parser_action_row2348[] = {
+       2,
+       -1, 3, 2347,
+       56, 0, 2718
+};
+static int parser_action_row2349[] = {
+       1,
+       -1, 1, 1264
+};
+static int parser_action_row2350[] = {
+       1,
+       -1, 1, 1292
+};
+static int parser_action_row2351[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2352[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2353[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2354[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2355[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2356[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2357[] = {
+       13,
+       -1, 1, 1393,
+       62, 0, 2725,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2358[] = {
+       25,
+       -1, 1, 944,
+       13, 0, 990,
+       47, 0, 991,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 2727
+};
+static int parser_action_row2359[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2360[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2361[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2362[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2363[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2364[] = {
+       13,
+       -1, 1, 1397,
+       62, 0, 2737,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2365[] = {
+       14,
+       -1, 1, 1396,
+       55, 0, 370,
+       62, 0, 2739,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2366[] = {
+       1,
+       -1, 1, 758
+};
+static int parser_action_row2367[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2368[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2369[] = {
+       1,
+       -1, 1, 547
+};
+static int parser_action_row2370[] = {
+       1,
+       -1, 1, 575
+};
+static int parser_action_row2371[] = {
+       1,
+       -1, 1, 551
+};
+static int parser_action_row2372[] = {
+       1,
+       -1, 1, 579
+};
+static int parser_action_row2373[] = {
+       1,
+       -1, 1, 550
+};
+static int parser_action_row2374[] = {
+       1,
+       -1, 1, 578
+};
+static int parser_action_row2375[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2376[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2377[] = {
+       1,
+       -1, 1, 553
+};
+static int parser_action_row2378[] = {
+       1,
+       -1, 1, 581
+};
+static int parser_action_row2379[] = {
+       1,
+       -1, 1, 543
+};
+static int parser_action_row2380[] = {
+       1,
+       -1, 1, 571
+};
+static int parser_action_row2381[] = {
+       1,
+       -1, 1, 556
+};
+static int parser_action_row2382[] = {
+       1,
+       -1, 1, 584
+};
+static int parser_action_row2383[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2384[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2385[] = {
+       1,
+       -1, 1, 560
+};
+static int parser_action_row2386[] = {
+       1,
+       -1, 1, 588
+};
+static int parser_action_row2387[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2388[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2389[] = {
+       1,
+       -1, 1, 530
+};
+static int parser_action_row2390[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2391[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2392[] = {
+       13,
+       -1, 1, 727,
+       62, 0, 2752,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2393[] = {
+       1,
+       -1, 1, 516
+};
+static int parser_action_row2394[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2395[] = {
+       1,
+       -1, 1, 829
+};
+static int parser_action_row2396[] = {
+       1,
+       -1, 1, 849
+};
+static int parser_action_row2397[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2398[] = {
+       1,
+       -1, 1, 831
+};
+static int parser_action_row2399[] = {
+       1,
+       -1, 1, 851
+};
+static int parser_action_row2400[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2401[] = {
+       1,
+       -1, 1, 830
+};
+static int parser_action_row2402[] = {
+       1,
+       -1, 1, 850
+};
+static int parser_action_row2403[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2404[] = {
+       1,
+       -1, 1, 832
+};
+static int parser_action_row2405[] = {
+       1,
+       -1, 1, 852
+};
+static int parser_action_row2406[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2407[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2408[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2409[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2410[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2411[] = {
+       2,
+       -1, 3, 2410,
+       56, 0, 2763
+};
+static int parser_action_row2412[] = {
+       4,
+       -1, 3, 2411,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2413[] = {
+       4,
+       -1, 3, 2412,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2414[] = {
+       4,
+       -1, 3, 2413,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2415[] = {
+       4,
+       -1, 3, 2414,
+       6, 0, 523,
+       18, 0, 525,
+       101, 0, 531
+};
+static int parser_action_row2416[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2417[] = {
+       4,
+       -1, 3, 2416,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2418[] = {
+       1,
+       -1, 1, 860
+};
+static int parser_action_row2419[] = {
+       4,
+       -1, 3, 2418,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2420[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2771,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2421[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2775,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2422[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2779,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2423[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 2783,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2424[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2425[] = {
+       1,
+       -1, 1, 865
+};
+static int parser_action_row2426[] = {
+       1,
+       -1, 1, 895
+};
+static int parser_action_row2427[] = {
+       1,
+       -1, 1, 450
+};
+static int parser_action_row2428[] = {
+       6,
+       -1, 3, 2427,
+       32, 0, 2788,
+       48, 0, 2789,
+       55, 0, 2790,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2429[] = {
+       1,
+       -1, 1, 1432
+};
+static int parser_action_row2430[] = {
+       2,
+       -1, 3, 2429,
+       25, 0, 2792
+};
+static int parser_action_row2431[] = {
+       1,
+       -1, 1, 1410
+};
+static int parser_action_row2432[] = {
+       1,
+       -1, 1, 1414
+};
+static int parser_action_row2433[] = {
+       2,
+       -1, 1, 1413,
+       55, 0, 370
+};
+static int parser_action_row2434[] = {
+       1,
+       -1, 1, 932
+};
+static int parser_action_row2435[] = {
+       4,
+       -1, 1, 1351,
+       57, 1, 1379,
+       76, 1, 1379,
+       97, 1, 1379
+};
+static int parser_action_row2436[] = {
+       4,
+       -1, 1, 1357,
+       57, 1, 1385,
+       76, 1, 1385,
+       97, 1, 1385
+};
+static int parser_action_row2437[] = {
+       4,
+       -1, 1, 1361,
+       57, 1, 1389,
+       76, 1, 1389,
+       97, 1, 1389
+};
+static int parser_action_row2438[] = {
+       5,
+       -1, 1, 1360,
+       55, 0, 370,
+       57, 1, 1388,
+       76, 1, 1388,
+       97, 1, 1388
+};
+static int parser_action_row2439[] = {
+       1,
+       -1, 1, 1418
+};
+static int parser_action_row2440[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2441[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2442[] = {
+       1,
+       -1, 1, 1387
+};
+static int parser_action_row2443[] = {
+       1,
+       -1, 1, 983
+};
+static int parser_action_row2444[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2445[] = {
+       1,
+       -1, 1, 1023
+};
+static int parser_action_row2446[] = {
+       2,
+       -1, 3, 2445,
+       58, 0, 2798
+};
+static int parser_action_row2447[] = {
+       1,
+       -1, 1, 70
+};
+static int parser_action_row2448[] = {
+       1,
+       -1, 1, 985
+};
+static int parser_action_row2449[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2450[] = {
+       1,
+       -1, 1, 1025
+};
+static int parser_action_row2451[] = {
+       2,
+       -1, 3, 2450,
+       58, 0, 2800
+};
+static int parser_action_row2452[] = {
+       1,
+       -1, 1, 72
+};
+static int parser_action_row2453[] = {
+       1,
+       -1, 1, 984
+};
+static int parser_action_row2454[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2455[] = {
+       1,
+       -1, 1, 1024
+};
+static int parser_action_row2456[] = {
+       2,
+       -1, 3, 2455,
+       58, 0, 2802
+};
+static int parser_action_row2457[] = {
+       1,
+       -1, 1, 71
+};
+static int parser_action_row2458[] = {
+       1,
+       -1, 1, 986
+};
+static int parser_action_row2459[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2460[] = {
+       1,
+       -1, 1, 1026
+};
+static int parser_action_row2461[] = {
+       2,
+       -1, 3, 2460,
+       58, 0, 2804
+};
+static int parser_action_row2462[] = {
+       1,
+       -1, 1, 73
+};
+static int parser_action_row2463[] = {
+       2,
+       -1, 3, 2462,
+       10, 0, 2805
+};
+static int parser_action_row2464[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2465[] = {
+       1,
+       -1, 1, 988
+};
+static int parser_action_row2466[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2467[] = {
+       1,
+       -1, 1, 990
+};
+static int parser_action_row2468[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2469[] = {
+       1,
+       -1, 1, 989
+};
+static int parser_action_row2470[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2471[] = {
+       1,
+       -1, 1, 991
+};
+static int parser_action_row2472[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2473[] = {
+       5,
+       -1, 3, 2472,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1024,
+       99, 0, 3
+};
+static int parser_action_row2474[] = {
+       2,
+       -1, 3, 2473,
+       24, 0, 2816
+};
+static int parser_action_row2475[] = {
+       2,
+       -1, 3, 2474,
+       16, 0, 2817
+};
+static int parser_action_row2476[] = {
+       3,
+       -1, 3, 2475,
+       16, 0, 2818,
+       59, 0, 1057
+};
+static int parser_action_row2477[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 2477,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2478[] = {
+       2,
+       -1, 1, 486,
+       25, 1, 1569
+};
+static int parser_action_row2479[] = {
+       32,
+       -1, 1, 944,
+       10, 0, 2820,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2480[] = {
+       1,
+       -1, 1, 1626
+};
+static int parser_action_row2481[] = {
+       2,
+       -1, 3, 2480,
+       16, 0, 2822
+};
+static int parser_action_row2482[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2483[] = {
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 742,
+       76, 1, 742,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 742,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2484[] = {
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 716,
+       61, 0, 282,
+       62, 0, 1181,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 716,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 716,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2485[] = {
+       3,
+       -1, 1, 941,
+       13, 0, 2826,
+       101, 0, 2827
+};
+static int parser_action_row2486[] = {
+       4,
+       -1, 1, 943,
+       13, 0, 2828,
+       100, 0, 67,
+       101, 0, 2829
+};
+static int parser_action_row2487[] = {
+       4,
+       -1, 1, 944,
+       13, 0, 2831,
+       100, 0, 67,
+       101, 0, 2832
+};
+static int parser_action_row2488[] = {
+       1,
+       -1, 1, 614
+};
+static int parser_action_row2489[] = {
+       2,
+       -1, 1, 533,
+       25, 1, 1611
+};
+static int parser_action_row2490[] = {
+       2,
+       -1, 1, 520,
+       25, 1, 1598
+};
+static int parser_action_row2491[] = {
+       2,
+       -1, 3, 2490,
+       25, 0, 2835
+};
+static int parser_action_row2492[] = {
+       4,
+       -1, 1, 691,
+       57, 1, 719,
+       76, 1, 719,
+       97, 1, 719
+};
+static int parser_action_row2493[] = {
+       4,
+       -1, 1, 697,
+       57, 1, 725,
+       76, 1, 725,
+       97, 1, 725
+};
+static int parser_action_row2494[] = {
+       4,
+       -1, 1, 701,
+       57, 1, 729,
+       76, 1, 729,
+       97, 1, 729
+};
+static int parser_action_row2495[] = {
+       5,
+       -1, 1, 700,
+       55, 0, 370,
+       57, 1, 728,
+       76, 1, 728,
+       97, 1, 728
+};
+static int parser_action_row2496[] = {
+       1,
+       -1, 1, 727
+};
+static int parser_action_row2497[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2498[] = {
+       1,
+       -1, 1, 480
+};
+static int parser_action_row2499[] = {
+       1,
+       -1, 1, 1199
+};
+static int parser_action_row2500[] = {
+       1,
+       -1, 1, 1444
+};
+static int parser_action_row2501[] = {
+       1,
+       -1, 1, 1446
+};
+static int parser_action_row2502[] = {
+       1,
+       -1, 1, 1445
+};
+static int parser_action_row2503[] = {
+       1,
+       -1, 1, 1447
+};
+static int parser_action_row2504[] = {
+       1,
+       -1, 1, 1435
+};
+static int parser_action_row2505[] = {
+       1,
+       -1, 1, 752
+};
+static int parser_action_row2506[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2507[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2508[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2509[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2510[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2511[] = {
+       2,
+       -1, 3, 2510,
+       56, 0, 2843
+};
+static int parser_action_row2512[] = {
+       2,
+       -1, 3, 2511,
+       56, 0, 2844
+};
+static int parser_action_row2513[] = {
+       2,
+       -1, 3, 2512,
+       56, 0, 2845
+};
+static int parser_action_row2514[] = {
+       2,
+       -1, 3, 2513,
+       56, 0, 2846
+};
+static int parser_action_row2515[] = {
+       1,
+       -1, 1, 811
+};
+static int parser_action_row2516[] = {
+       1,
+       -1, 1, 912
+};
+static int parser_action_row2517[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2518[] = {
+       1,
+       -1, 1, 476
+};
+static int parser_action_row2519[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2520[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2521[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2522[] = {
+       14,
+       -1, 1, 728,
+       55, 0, 370,
+       62, 0, 2848,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2523[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2524[] = {
+       1,
+       -1, 1, 787
+};
+static int parser_action_row2525[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2526[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2527[] = {
+       1,
+       -1, 1, 1068
+};
+static int parser_action_row2528[] = {
+       3,
+       -1, 3, 2527,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2529[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2530[] = {
+       3,
+       -1, 1, 1103,
+       55, 0, 370,
+       76, 0, 2854
+};
+static int parser_action_row2531[] = {
+       1,
+       -1, 1, 1100
+};
+static int parser_action_row2532[] = {
+       4,
+       -1, 3, 2531,
+       48, 0, 2527,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2533[] = {
+       3,
+       -1, 1, 1106,
+       76, 1, 1134,
+       97, 1, 1134
+};
+static int parser_action_row2534[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2535[] = {
+       2,
+       -1, 3, 2534,
+       76, 0, 2858
+};
+static int parser_action_row2536[] = {
+       3,
+       -1, 1, 1109,
+       76, 1, 1137,
+       97, 1, 1137
+};
+static int parser_action_row2537[] = {
+       4,
+       -1, 1, 1118,
+       55, 0, 370,
+       76, 1, 1146,
+       97, 1, 1146
+};
+static int parser_action_row2538[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2539[] = {
+       2,
+       -1, 3, 2538,
+       76, 0, 2861
+};
+static int parser_action_row2540[] = {
+       5,
+       -1, 1, 1130,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1158,
+       97, 1, 1158
+};
+static int parser_action_row2541[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 2863
+};
+static int parser_action_row2542[] = {
+       1,
+       -1, 1, 1159
+};
+static int parser_action_row2543[] = {
+       1,
+       -1, 1, 1143
+};
+static int parser_action_row2544[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2545[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2546[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2547[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2548[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2549[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2550[] = {
+       4,
+       -1, 3, 2549,
+       48, 0, 2870,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2551[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2552[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2553[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2554[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2555[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2556[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2557[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2558[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2559[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2560[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2561[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2562[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2563[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2564[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2565[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2566[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2567[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2568[] = {
+       22,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2569[] = {
+       5,
+       -1, 1, 944,
+       13, 0, 2891,
+       47, 0, 2892,
+       100, 0, 67,
+       101, 0, 2893
+};
+static int parser_action_row2570[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2571[] = {
+       1,
+       -1, 1, 1155
+};
+static int parser_action_row2572[] = {
+       2,
+       -1, 1, 1152,
+       55, 0, 370
+};
+static int parser_action_row2573[] = {
+       1,
+       -1, 1, 105
+};
+static int parser_action_row2574[] = {
+       1,
+       -1, 1, 74
+};
+static int parser_action_row2575[] = {
+       2,
+       -1, 3, 2574,
+       10, 0, 2899
+};
+static int parser_action_row2576[] = {
+       1,
+       -1, 1, 103
+};
+static int parser_action_row2577[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2578[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2579[] = {
+       3,
+       -1, 3, 2578,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2580[] = {
+       1,
+       -1, 1, 230
+};
+static int parser_action_row2581[] = {
+       1,
+       -1, 1, 310
+};
+static int parser_action_row2582[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2583[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2584[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2585[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2586[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2907
+};
+static int parser_action_row2587[] = {
+       3,
+       -1, 3, 2586,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2588[] = {
+       1,
+       -1, 1, 145
+};
+static int parser_action_row2589[] = {
+       1,
+       -1, 1, 355
+};
+static int parser_action_row2590[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2591[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2592[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2593[] = {
+       2,
+       -1, 3, 2592,
+       16, 0, 2913
+};
+static int parser_action_row2594[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2595[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2596[] = {
+       1,
+       -1, 1, 255
+};
+static int parser_action_row2597[] = {
+       2,
+       -1, 3, 2596,
+       16, 0, 2916
+};
+static int parser_action_row2598[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2599[] = {
+       2,
+       -1, 3, 2598,
+       60, 0, 139
+};
+static int parser_action_row2600[] = {
+       3,
+       -1, 3, 2599,
+       15, 0, 1496,
+       16, 0, 2919
+};
+static int parser_action_row2601[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2602[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2603[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2923
+};
+static int parser_action_row2604[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2605[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2606[] = {
+       2,
+       -1, 3, 2605,
+       16, 0, 2929
+};
+static int parser_action_row2607[] = {
+       4,
+       -1, 3, 2606,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2608[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2609[] = {
+       2,
+       -1, 3, 2608,
+       60, 0, 139
+};
+static int parser_action_row2610[] = {
+       3,
+       -1, 3, 2609,
+       15, 0, 1496,
+       16, 0, 2933
+};
+static int parser_action_row2611[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2612[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2613[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2937
+};
+static int parser_action_row2614[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2615[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2616[] = {
+       2,
+       -1, 3, 2615,
+       16, 0, 2943
+};
+static int parser_action_row2617[] = {
+       4,
+       -1, 3, 2616,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2618[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2619[] = {
+       2,
+       -1, 3, 2618,
+       60, 0, 139
+};
+static int parser_action_row2620[] = {
+       3,
+       -1, 3, 2619,
+       15, 0, 1496,
+       16, 0, 2947
+};
+static int parser_action_row2621[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2622[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2623[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2951
+};
+static int parser_action_row2624[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2625[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2626[] = {
+       2,
+       -1, 3, 2625,
+       16, 0, 2957
+};
+static int parser_action_row2627[] = {
+       4,
+       -1, 3, 2626,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2628[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2629[] = {
+       2,
+       -1, 3, 2628,
+       60, 0, 139
+};
+static int parser_action_row2630[] = {
+       3,
+       -1, 3, 2629,
+       15, 0, 1496,
+       16, 0, 2961
+};
+static int parser_action_row2631[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2632[] = {
+       2,
+       -1, 1, 483,
+       60, 0, 439
+};
+static int parser_action_row2633[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2965
+};
+static int parser_action_row2634[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 137,
+       60, 0, 139
+};
+static int parser_action_row2635[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2636[] = {
+       2,
+       -1, 3, 2635,
+       16, 0, 2971
+};
+static int parser_action_row2637[] = {
+       4,
+       -1, 3, 2636,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2638[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2639[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2640[] = {
+       3,
+       -1, 3, 2639,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2641[] = {
+       1,
+       -1, 1, 365
+};
+static int parser_action_row2642[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2643[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2977
+};
+static int parser_action_row2644[] = {
+       3,
+       -1, 3, 2643,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2645[] = {
+       1,
+       -1, 1, 185
+};
+static int parser_action_row2646[] = {
+       1,
+       -1, 1, 155
+};
+static int parser_action_row2647[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2648[] = {
+       1,
+       -1, 1, 111
+};
+static int parser_action_row2649[] = {
+       2,
+       -1, 1, 402,
+       16, 1, 405
+};
+static int parser_action_row2650[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       10, 1, 407,
+       16, 1, 407,
+       99, 0, 3
+};
+static int parser_action_row2651[] = {
+       2,
+       -1, 1, 270,
+       10, 0, 2982
+};
+static int parser_action_row2652[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2653[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2654[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 2985
+};
+static int parser_action_row2655[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2656[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2657[] = {
+       2,
+       -1, 3, 2656,
+       16, 0, 2991
+};
+static int parser_action_row2658[] = {
+       3,
+       -1, 3, 2657,
+       15, 0, 1496,
+       16, 0, 2992
+};
+static int parser_action_row2659[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 2994,
+       62, 0, 2995
+};
+static int parser_action_row2660[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2661[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 2999
+};
+static int parser_action_row2662[] = {
+       3,
+       -1, 3, 2661,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2663[] = {
+       1,
+       -1, 1, 171
+};
+static int parser_action_row2664[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3002
+};
+static int parser_action_row2665[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2666[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2667[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2668[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3009
+};
+static int parser_action_row2669[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2670[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2671[] = {
+       2,
+       -1, 3, 2670,
+       16, 0, 3015
+};
+static int parser_action_row2672[] = {
+       3,
+       -1, 3, 2671,
+       15, 0, 1496,
+       16, 0, 3016
+};
+static int parser_action_row2673[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3018,
+       62, 0, 3019
+};
+static int parser_action_row2674[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2675[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3023
+};
+static int parser_action_row2676[] = {
+       3,
+       -1, 3, 2675,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2677[] = {
+       1,
+       -1, 1, 173
+};
+static int parser_action_row2678[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3026
+};
+static int parser_action_row2679[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2680[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2681[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2682[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3033
+};
+static int parser_action_row2683[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2684[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2685[] = {
+       2,
+       -1, 3, 2684,
+       16, 0, 3039
+};
+static int parser_action_row2686[] = {
+       3,
+       -1, 3, 2685,
+       15, 0, 1496,
+       16, 0, 3040
+};
+static int parser_action_row2687[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3042,
+       62, 0, 3043
+};
+static int parser_action_row2688[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2689[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3047
+};
+static int parser_action_row2690[] = {
+       3,
+       -1, 3, 2689,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2691[] = {
+       1,
+       -1, 1, 172
+};
+static int parser_action_row2692[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3050
+};
+static int parser_action_row2693[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2694[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2695[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2696[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3057
+};
+static int parser_action_row2697[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2698[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2699[] = {
+       2,
+       -1, 3, 2698,
+       16, 0, 3063
+};
+static int parser_action_row2700[] = {
+       3,
+       -1, 3, 2699,
+       15, 0, 1496,
+       16, 0, 3064
+};
+static int parser_action_row2701[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3066,
+       62, 0, 3067
+};
+static int parser_action_row2702[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2703[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3071
+};
+static int parser_action_row2704[] = {
+       3,
+       -1, 3, 2703,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2705[] = {
+       1,
+       -1, 1, 174
+};
+static int parser_action_row2706[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3074
+};
+static int parser_action_row2707[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2708[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2709[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2710[] = {
+       1,
+       -1, 1, 190
+};
+static int parser_action_row2711[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2712[] = {
+       1,
+       -1, 1, 380
+};
+static int parser_action_row2713[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2714[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2715[] = {
+       3,
+       -1, 3, 2714,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2716[] = {
+       1,
+       -1, 1, 370
+};
+static int parser_action_row2717[] = {
+       1,
+       -1, 1, 160
+};
+static int parser_action_row2718[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2719[] = {
+       2,
+       -1, 1, 907,
+       98, 0, 270
+};
+static int parser_action_row2720[] = {
+       1,
+       -1, 1, 1263
+};
+static int parser_action_row2721[] = {
+       1,
+       -1, 1, 1291
+};
+static int parser_action_row2722[] = {
+       1,
+       -1, 1, 1246
+};
+static int parser_action_row2723[] = {
+       1,
+       -1, 1, 1274
+};
+static int parser_action_row2724[] = {
+       1,
+       -1, 1, 1266
+};
+static int parser_action_row2725[] = {
+       1,
+       -1, 1, 1294
+};
+static int parser_action_row2726[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2727[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2728[] = {
+       15,
+       -1, 1, 1376,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 3089,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2729[] = {
+       2,
+       -1, 3, 2728,
+       102, 0, 3092
+};
+static int parser_action_row2730[] = {
+       22,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 3093
+};
+static int parser_action_row2731[] = {
+       1,
+       -1, 1, 1463
+};
+static int parser_action_row2732[] = {
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 3094
+};
+static int parser_action_row2733[] = {
+       24,
+       -1, 1, 944,
+       13, 0, 1276,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 3096
+};
+static int parser_action_row2734[] = {
+       1,
+       -1, 1, 1271
+};
+static int parser_action_row2735[] = {
+       1,
+       -1, 1, 1299
+};
+static int parser_action_row2736[] = {
+       1,
+       -1, 1, 1270
+};
+static int parser_action_row2737[] = {
+       1,
+       -1, 1, 1298
+};
+static int parser_action_row2738[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2739[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2740[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2741[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2742[] = {
+       13,
+       -1, 1, 1395,
+       62, 0, 3105,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row2743[] = {
+       2,
+       -1, 3, 2742,
+       46, 0, 3107
+};
+static int parser_action_row2744[] = {
+       2,
+       -1, 3, 2743,
+       56, 0, 3108
+};
+static int parser_action_row2745[] = {
+       1,
+       -1, 1, 549
+};
+static int parser_action_row2746[] = {
+       1,
+       -1, 1, 577
+};
+static int parser_action_row2747[] = {
+       1,
+       -1, 1, 555
+};
+static int parser_action_row2748[] = {
+       1,
+       -1, 1, 583
+};
+static int parser_action_row2749[] = {
+       1,
+       -1, 1, 559
+};
+static int parser_action_row2750[] = {
+       1,
+       -1, 1, 587
+};
+static int parser_action_row2751[] = {
+       1,
+       -1, 1, 558
+};
+static int parser_action_row2752[] = {
+       1,
+       -1, 1, 586
+};
+static int parser_action_row2753[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2754[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2755[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2756[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2757[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2758[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2759[] = {
+       2,
+       -1, 3, 2758,
+       56, 0, 3115
+};
+static int parser_action_row2760[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2761[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2762[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2763[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2764[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2765[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 3121,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2766[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 3125,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2767[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 3129,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2768[] = {
+       58,
+       -1, 1, 944,
+       0, 0, 100,
+       1, 0, 101,
+       11, 0, 167,
+       13, 0, 168,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 169,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 170,
+       34, 0, 1500,
+       35, 0, 1501,
+       36, 0, 1502,
+       37, 0, 1503,
+       38, 0, 56,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       48, 0, 537,
+       49, 0, 177,
+       51, 0, 62,
+       52, 0, 1504,
+       53, 0, 1505,
+       55, 0, 3133,
+       57, 0, 855,
+       77, 0, 1507,
+       78, 0, 1508,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 1509,
+       86, 0, 1510,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       99, 0, 102,
+       100, 0, 517,
+       101, 0, 1511,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2769[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2770[] = {
+       1,
+       -1, 1, 870
+};
+static int parser_action_row2771[] = {
+       1,
+       -1, 1, 900
+};
+static int parser_action_row2772[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2773[] = {
+       4,
+       -1, 3, 2772,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2774[] = {
+       1,
+       -1, 1, 856
+};
+static int parser_action_row2775[] = {
+       4,
+       -1, 3, 2774,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2776[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2777[] = {
+       4,
+       -1, 3, 2776,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2778[] = {
+       1,
+       -1, 1, 858
+};
+static int parser_action_row2779[] = {
+       4,
+       -1, 3, 2778,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2780[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2781[] = {
+       4,
+       -1, 3, 2780,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2782[] = {
+       1,
+       -1, 1, 857
+};
+static int parser_action_row2783[] = {
+       4,
+       -1, 3, 2782,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2784[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2785[] = {
+       4,
+       -1, 3, 2784,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2786[] = {
+       1,
+       -1, 1, 859
+};
+static int parser_action_row2787[] = {
+       4,
+       -1, 3, 2786,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row2788[] = {
+       2,
+       -1, 3, 2787,
+       56, 0, 3150
+};
+static int parser_action_row2789[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2790[] = {
+       3,
+       -1, 1, 460,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2791[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2792[] = {
+       1,
+       -1, 1, 458
+};
+static int parser_action_row2793[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2794[] = {
+       1,
+       -1, 1, 1412
+};
+static int parser_action_row2795[] = {
+       4,
+       -1, 1, 1359,
+       57, 1, 1387,
+       76, 1, 1387,
+       97, 1, 1387
+};
+static int parser_action_row2796[] = {
+       2,
+       -1, 3, 2795,
+       46, 0, 3154
+};
+static int parser_action_row2797[] = {
+       2,
+       -1, 3, 2796,
+       56, 0, 3155
+};
+static int parser_action_row2798[] = {
+       1,
+       -1, 1, 993
+};
+static int parser_action_row2799[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2800[] = {
+       1,
+       -1, 1, 995
+};
+static int parser_action_row2801[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2802[] = {
+       1,
+       -1, 1, 994
+};
+static int parser_action_row2803[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2804[] = {
+       1,
+       -1, 1, 996
+};
+static int parser_action_row2805[] = {
+       6,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 96,
+       99, 0, 3,
+       113, 0, 97
+};
+static int parser_action_row2806[] = {
+       1,
+       -1, 1, 79
+};
+static int parser_action_row2807[] = {
+       2,
+       -1, 3, 2806,
+       10, 0, 3164
+};
+static int parser_action_row2808[] = {
+       2,
+       -1, 3, 2807,
+       10, 0, 3165
+};
+static int parser_action_row2809[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2810[] = {
+       2,
+       -1, 3, 2809,
+       10, 0, 3167
+};
+static int parser_action_row2811[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2812[] = {
+       2,
+       -1, 3, 2811,
+       10, 0, 3169
+};
+static int parser_action_row2813[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2814[] = {
+       2,
+       -1, 3, 2813,
+       10, 0, 3171
+};
+static int parser_action_row2815[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row2816[] = {
+       2,
+       -1, 1, 611,
+       25, 1, 1616
+};
+static int parser_action_row2817[] = {
+       36,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       25, 0, 1358,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2818[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1712,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2819[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1712,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2820[] = {
+       1,
+       -1, 1, 1627
+};
+static int parser_action_row2821[] = {
+       2,
+       -1, 1, 485,
+       25, 1, 1568
+};
+static int parser_action_row2822[] = {
+       2,
+       -1, 1, 484,
+       25, 1, 1567
+};
+static int parser_action_row2823[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 1712,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2824[] = {
+       2,
+       -1, 1, 535,
+       25, 1, 1613
+};
+static int parser_action_row2825[] = {
+       2,
+       -1, 1, 523,
+       25, 1, 1601
+};
+static int parser_action_row2826[] = {
+       2,
+       -1, 1, 510,
+       25, 1, 1588
+};
+static int parser_action_row2827[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2828[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 718,
+       62, 0, 1540,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 718,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 718,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2829[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2830[] = {
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 722,
+       61, 0, 282,
+       62, 0, 1545,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 722,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 722,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2831[] = {
+       3,
+       -1, 1, 942,
+       13, 0, 3184,
+       101, 0, 3185
+};
+static int parser_action_row2832[] = {
+       29,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 744,
+       76, 1, 744,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 744,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2833[] = {
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 724,
+       61, 0, 282,
+       62, 0, 1553,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 724,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 724,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row2834[] = {
+       3,
+       -1, 1, 941,
+       13, 0, 3188,
+       101, 0, 3189
+};
+static int parser_action_row2835[] = {
+       4,
+       -1, 1, 943,
+       13, 0, 3190,
+       100, 0, 67,
+       101, 0, 3191
+};
+static int parser_action_row2836[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2837[] = {
+       4,
+       -1, 1, 699,
+       57, 1, 727,
+       76, 1, 727,
+       97, 1, 727
+};
+static int parser_action_row2838[] = {
+       1,
+       -1, 1, 1200
+};
+static int parser_action_row2839[] = {
+       2,
+       -1, 3, 2838,
+       56, 0, 3194
+};
+static int parser_action_row2840[] = {
+       2,
+       -1, 3, 2839,
+       56, 0, 3195
+};
+static int parser_action_row2841[] = {
+       2,
+       -1, 3, 2840,
+       56, 0, 3196
+};
+static int parser_action_row2842[] = {
+       2,
+       -1, 3, 2841,
+       56, 0, 3197
+};
+static int parser_action_row2843[] = {
+       1,
+       -1, 1, 816
+};
+static int parser_action_row2844[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2845[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2846[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2847[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2848[] = {
+       1,
+       -1, 1, 477
+};
+static int parser_action_row2849[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2850[] = {
+       2,
+       -1, 1, 785,
+       25, 0, 2835
+};
+static int parser_action_row2851[] = {
+       32,
+       -1, 1, 944,
+       10, 0, 939,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2852[] = {
+       2,
+       -1, 3, 2851,
+       24, 0, 3204
+};
+static int parser_action_row2853[] = {
+       2,
+       -1, 1, 1437,
+       98, 0, 813
+};
+static int parser_action_row2854[] = {
+       1,
+       -1, 1, 1469
+};
+static int parser_action_row2855[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2856[] = {
+       1,
+       -1, 1, 1102
+};
+static int parser_action_row2857[] = {
+       2,
+       -1, 3, 2856,
+       76, 0, 2854
+};
+static int parser_action_row2858[] = {
+       5,
+       -1, 1, 944,
+       13, 0, 2891,
+       47, 0, 2892,
+       100, 0, 67,
+       101, 0, 2893
+};
+static int parser_action_row2859[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2860[] = {
+       3,
+       -1, 1, 1115,
+       76, 1, 1143,
+       97, 1, 1143
+};
+static int parser_action_row2861[] = {
+       5,
+       -1, 1, 944,
+       13, 0, 2891,
+       47, 0, 2892,
+       100, 0, 67,
+       101, 0, 3209
+};
+static int parser_action_row2862[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2863[] = {
+       3,
+       -1, 1, 1127,
+       76, 1, 1155,
+       97, 1, 1155
+};
+static int parser_action_row2864[] = {
+       4,
+       -1, 1, 1124,
+       55, 0, 370,
+       76, 1, 1152,
+       97, 1, 1152
+};
+static int parser_action_row2865[] = {
+       1,
+       -1, 1, 776
+};
+static int parser_action_row2866[] = {
+       1,
+       -1, 1, 775
+};
+static int parser_action_row2867[] = {
+       1,
+       -1, 1, 1064
+};
+static int parser_action_row2868[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row2869[] = {
+       1,
+       -1, 1, 1063
+};
+static int parser_action_row2870[] = {
+       1,
+       -1, 1, 1066
+};
+static int parser_action_row2871[] = {
+       3,
+       -1, 3, 2870,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row2872[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row2873[] = {
+       1,
+       -1, 1, 1077
+};
+static int parser_action_row2874[] = {
+       2,
+       -1, 1, 1079,
+       84, 0, 2218
+};
+static int parser_action_row2875[] = {
+       2,
+       -1, 1, 1070,
+       83, 0, 2210
+};
+static int parser_action_row2876[] = {
+       2,
+       -1, 1, 1071,
+       83, 0, 2210
+};
+static int parser_action_row2877[] = {
+       2,
+       -1, 1, 1072,
+       83, 0, 2210
+};
+static int parser_action_row2878[] = {
+       2,
+       -1, 1, 1073,
+       83, 0, 2210
+};
+static int parser_action_row2879[] = {
+       2,
+       -1, 1, 1074,
+       83, 0, 2210
+};
+static int parser_action_row2880[] = {
+       2,
+       -1, 1, 1075,
+       83, 0, 2210
+};
+static int parser_action_row2881[] = {
+       2,
+       -1, 1, 1076,
+       83, 0, 2210
+};
+static int parser_action_row2882[] = {
+       2,
+       -1, 1, 1081,
+       85, 0, 2219
+};
+static int parser_action_row2883[] = {
+       3,
+       -1, 1, 1083,
+       91, 0, 2220,
+       94, 0, 2221
+};
+static int parser_action_row2884[] = {
+       3,
+       -1, 1, 1085,
+       77, 0, 2222,
+       78, 0, 2223
+};
+static int parser_action_row2885[] = {
+       3,
+       -1, 1, 1086,
+       77, 0, 2222,
+       78, 0, 2223
+};
+static int parser_action_row2886[] = {
+       4,
+       -1, 1, 1088,
+       79, 0, 2224,
+       81, 0, 2225,
+       82, 0, 2226
+};
+static int parser_action_row2887[] = {
+       4,
+       -1, 1, 1089,
+       79, 0, 2224,
+       81, 0, 2225,
+       82, 0, 2226
+};
+static int parser_action_row2888[] = {
+       1,
+       -1, 1, 1091
+};
+static int parser_action_row2889[] = {
+       1,
+       -1, 1, 1092
+};
+static int parser_action_row2890[] = {
+       1,
+       -1, 1, 1093
+};
+static int parser_action_row2891[] = {
+       1,
+       -1, 1, 1095
+};
+static int parser_action_row2892[] = {
+       2,
+       -1, 1, 1164,
+       55, 0, 370
+};
+static int parser_action_row2893[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2894[] = {
+       3,
+       -1, 1, 1138,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row2895[] = {
+       2,
+       -1, 3, 2894,
+       102, 0, 3220
+};
+static int parser_action_row2896[] = {
+       2,
+       -1, 1, 941,
+       101, 0, 3221
+};
+static int parser_action_row2897[] = {
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 3222
+};
+static int parser_action_row2898[] = {
+       4,
+       -1, 1, 944,
+       13, 0, 3224,
+       100, 0, 67,
+       101, 0, 3225
+};
+static int parser_action_row2899[] = {
+       1,
+       -1, 1, 1149
+};
+static int parser_action_row2900[] = {
+       1,
+       -1, 1, 84
+};
+static int parser_action_row2901[] = {
+       1,
+       -1, 1, 120
+};
+static int parser_action_row2902[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2903[] = {
+       1,
+       -1, 1, 240
+};
+static int parser_action_row2904[] = {
+       1,
+       -1, 1, 330
+};
+static int parser_action_row2905[] = {
+       1,
+       -1, 1, 320
+};
+static int parser_action_row2906[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2907[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2908[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2909[] = {
+       3,
+       -1, 3, 2908,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2910[] = {
+       1,
+       -1, 1, 235
+};
+static int parser_action_row2911[] = {
+       1,
+       -1, 1, 315
+};
+static int parser_action_row2912[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2913[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2914[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2915[] = {
+       2,
+       -1, 1, 275,
+       10, 0, 3237
+};
+static int parser_action_row2916[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2917[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2918[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3240
+};
+static int parser_action_row2919[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2920[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2921[] = {
+       2,
+       -1, 3, 2920,
+       16, 0, 3246
+};
+static int parser_action_row2922[] = {
+       3,
+       -1, 3, 2921,
+       15, 0, 1496,
+       16, 0, 3247
+};
+static int parser_action_row2923[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3249,
+       62, 0, 3250
+};
+static int parser_action_row2924[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2925[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3254
+};
+static int parser_action_row2926[] = {
+       3,
+       -1, 3, 2925,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2927[] = {
+       1,
+       -1, 1, 176
+};
+static int parser_action_row2928[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3257
+};
+static int parser_action_row2929[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2930[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2931[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2932[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3264
+};
+static int parser_action_row2933[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2934[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2935[] = {
+       2,
+       -1, 3, 2934,
+       16, 0, 3270
+};
+static int parser_action_row2936[] = {
+       3,
+       -1, 3, 2935,
+       15, 0, 1496,
+       16, 0, 3271
+};
+static int parser_action_row2937[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3273,
+       62, 0, 3274
+};
+static int parser_action_row2938[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2939[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3278
+};
+static int parser_action_row2940[] = {
+       3,
+       -1, 3, 2939,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2941[] = {
+       1,
+       -1, 1, 178
+};
+static int parser_action_row2942[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3281
+};
+static int parser_action_row2943[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2944[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2945[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2946[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3288
+};
+static int parser_action_row2947[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2948[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2949[] = {
+       2,
+       -1, 3, 2948,
+       16, 0, 3294
+};
+static int parser_action_row2950[] = {
+       3,
+       -1, 3, 2949,
+       15, 0, 1496,
+       16, 0, 3295
+};
+static int parser_action_row2951[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3297,
+       62, 0, 3298
+};
+static int parser_action_row2952[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2953[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3302
+};
+static int parser_action_row2954[] = {
+       3,
+       -1, 3, 2953,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2955[] = {
+       1,
+       -1, 1, 177
+};
+static int parser_action_row2956[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3305
+};
+static int parser_action_row2957[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2958[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2959[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2960[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3312
+};
+static int parser_action_row2961[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2962[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2963[] = {
+       2,
+       -1, 3, 2962,
+       16, 0, 3318
+};
+static int parser_action_row2964[] = {
+       3,
+       -1, 3, 2963,
+       15, 0, 1496,
+       16, 0, 3319
+};
+static int parser_action_row2965[] = {
+       4,
+       -1, 1, 404,
+       15, 0, 2289,
+       16, 0, 3321,
+       62, 0, 3322
+};
+static int parser_action_row2966[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2967[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3326
+};
+static int parser_action_row2968[] = {
+       3,
+       -1, 3, 2967,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2969[] = {
+       1,
+       -1, 1, 179
+};
+static int parser_action_row2970[] = {
+       4,
+       -1, 1, 449,
+       4, 0, 658,
+       15, 0, 659,
+       16, 0, 3329
+};
+static int parser_action_row2971[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2972[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2973[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2974[] = {
+       1,
+       -1, 1, 195
+};
+static int parser_action_row2975[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2976[] = {
+       1,
+       -1, 1, 385
+};
+static int parser_action_row2977[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2978[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2979[] = {
+       3,
+       -1, 3, 2978,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2980[] = {
+       1,
+       -1, 1, 375
+};
+static int parser_action_row2981[] = {
+       1,
+       -1, 1, 165
+};
+static int parser_action_row2982[] = {
+       2,
+       -1, 1, 406,
+       10, 0, 1580
+};
+static int parser_action_row2983[] = {
+       1,
+       -1, 1, 290
+};
+static int parser_action_row2984[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row2985[] = {
+       2,
+       -1, 1, 280,
+       10, 0, 3341
+};
+static int parser_action_row2986[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2987[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3343
+};
+static int parser_action_row2988[] = {
+       3,
+       -1, 3, 2987,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row2989[] = {
+       1,
+       -1, 1, 141
+};
+static int parser_action_row2990[] = {
+       1,
+       -1, 1, 351
+};
+static int parser_action_row2991[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row2992[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2993[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2994[] = {
+       2,
+       -1, 3, 2993,
+       16, 0, 3349
+};
+static int parser_action_row2995[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row2996[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2997[] = {
+       1,
+       -1, 1, 251
+};
+static int parser_action_row2998[] = {
+       2,
+       -1, 3, 2997,
+       16, 0, 3352
+};
+static int parser_action_row2999[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3000[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3001[] = {
+       3,
+       -1, 3, 3000,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3002[] = {
+       1,
+       -1, 1, 361
+};
+static int parser_action_row3003[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3004[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3357
+};
+static int parser_action_row3005[] = {
+       3,
+       -1, 3, 3004,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3006[] = {
+       1,
+       -1, 1, 181
+};
+static int parser_action_row3007[] = {
+       1,
+       -1, 1, 151
+};
+static int parser_action_row3008[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3009[] = {
+       1,
+       -1, 1, 107
+};
+static int parser_action_row3010[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3011[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3362
+};
+static int parser_action_row3012[] = {
+       3,
+       -1, 3, 3011,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3013[] = {
+       1,
+       -1, 1, 143
+};
+static int parser_action_row3014[] = {
+       1,
+       -1, 1, 353
+};
+static int parser_action_row3015[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3016[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3017[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3018[] = {
+       2,
+       -1, 3, 3017,
+       16, 0, 3368
+};
+static int parser_action_row3019[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3020[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3021[] = {
+       1,
+       -1, 1, 253
+};
+static int parser_action_row3022[] = {
+       2,
+       -1, 3, 3021,
+       16, 0, 3371
+};
+static int parser_action_row3023[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3024[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3025[] = {
+       3,
+       -1, 3, 3024,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3026[] = {
+       1,
+       -1, 1, 363
+};
+static int parser_action_row3027[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3028[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3376
+};
+static int parser_action_row3029[] = {
+       3,
+       -1, 3, 3028,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3030[] = {
+       1,
+       -1, 1, 183
+};
+static int parser_action_row3031[] = {
+       1,
+       -1, 1, 153
+};
+static int parser_action_row3032[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3033[] = {
+       1,
+       -1, 1, 109
+};
+static int parser_action_row3034[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3035[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3381
+};
+static int parser_action_row3036[] = {
+       3,
+       -1, 3, 3035,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3037[] = {
+       1,
+       -1, 1, 142
+};
+static int parser_action_row3038[] = {
+       1,
+       -1, 1, 352
+};
+static int parser_action_row3039[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3040[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3041[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3042[] = {
+       2,
+       -1, 3, 3041,
+       16, 0, 3387
+};
+static int parser_action_row3043[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3044[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3045[] = {
+       1,
+       -1, 1, 252
+};
+static int parser_action_row3046[] = {
+       2,
+       -1, 3, 3045,
+       16, 0, 3390
+};
+static int parser_action_row3047[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3048[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3049[] = {
+       3,
+       -1, 3, 3048,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3050[] = {
+       1,
+       -1, 1, 362
+};
+static int parser_action_row3051[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3052[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3395
+};
+static int parser_action_row3053[] = {
+       3,
+       -1, 3, 3052,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3054[] = {
+       1,
+       -1, 1, 182
+};
+static int parser_action_row3055[] = {
+       1,
+       -1, 1, 152
+};
+static int parser_action_row3056[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3057[] = {
+       1,
+       -1, 1, 108
+};
+static int parser_action_row3058[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3059[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3400
+};
+static int parser_action_row3060[] = {
+       3,
+       -1, 3, 3059,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3061[] = {
+       1,
+       -1, 1, 144
+};
+static int parser_action_row3062[] = {
+       1,
+       -1, 1, 354
+};
+static int parser_action_row3063[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3064[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3065[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3066[] = {
+       2,
+       -1, 3, 3065,
+       16, 0, 3406
+};
+static int parser_action_row3067[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3068[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3069[] = {
+       1,
+       -1, 1, 254
+};
+static int parser_action_row3070[] = {
+       2,
+       -1, 3, 3069,
+       16, 0, 3409
+};
+static int parser_action_row3071[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3072[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3073[] = {
+       3,
+       -1, 3, 3072,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3074[] = {
+       1,
+       -1, 1, 364
+};
+static int parser_action_row3075[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3076[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3414
+};
+static int parser_action_row3077[] = {
+       3,
+       -1, 3, 3076,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3078[] = {
+       1,
+       -1, 1, 184
+};
+static int parser_action_row3079[] = {
+       1,
+       -1, 1, 154
+};
+static int parser_action_row3080[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3081[] = {
+       1,
+       -1, 1, 110
+};
+static int parser_action_row3082[] = {
+       1,
+       -1, 1, 210
+};
+static int parser_action_row3083[] = {
+       1,
+       -1, 1, 200
+};
+static int parser_action_row3084[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3085[] = {
+       1,
+       -1, 1, 390
+};
+static int parser_action_row3086[] = {
+       1,
+       -1, 1, 1710
+};
+static int parser_action_row3087[] = {
+       1,
+       -1, 1, 908
+};
+static int parser_action_row3088[] = {
+       1,
+       -1, 1, 1265
+};
+static int parser_action_row3089[] = {
+       1,
+       -1, 1, 1293
+};
+static int parser_action_row3090[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3091[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3092[] = {
+       13,
+       -1, 1, 1375,
+       62, 0, 3421,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3093[] = {
+       13,
+       -1, 1, 1372,
+       62, 0, 3423,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3094[] = {
+       14,
+       -1, 1, 1378,
+       55, 0, 370,
+       62, 0, 3425,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3095[] = {
+       15,
+       -1, 1, 1382,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 3428,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3096[] = {
+       22,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 3431
+};
+static int parser_action_row3097[] = {
+       15,
+       -1, 1, 1384,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 3432,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3098[] = {
+       2,
+       -1, 3, 3097,
+       102, 0, 3435
+};
+static int parser_action_row3099[] = {
+       22,
+       -1, 1, 941,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 3436
+};
+static int parser_action_row3100[] = {
+       1,
+       -1, 1, 1464
+};
+static int parser_action_row3101[] = {
+       23,
+       -1, 1, 943,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       100, 0, 67,
+       101, 0, 3437
+};
+static int parser_action_row3102[] = {
+       1,
+       -1, 1, 1269
+};
+static int parser_action_row3103[] = {
+       1,
+       -1, 1, 1297
+};
+static int parser_action_row3104[] = {
+       1,
+       -1, 1, 1268
+};
+static int parser_action_row3105[] = {
+       1,
+       -1, 1, 1296
+};
+static int parser_action_row3106[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3107[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3108[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3109[] = {
+       1,
+       -1, 1, 756
+};
+static int parser_action_row3110[] = {
+       1,
+       -1, 1, 557
+};
+static int parser_action_row3111[] = {
+       1,
+       -1, 1, 585
+};
+static int parser_action_row3112[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3113[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3114[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3115[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3116[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3117[] = {
+       2,
+       -1, 3, 3116,
+       56, 0, 3447
+};
+static int parser_action_row3118[] = {
+       2,
+       -1, 3, 3117,
+       56, 0, 3448
+};
+static int parser_action_row3119[] = {
+       2,
+       -1, 3, 3118,
+       56, 0, 3449
+};
+static int parser_action_row3120[] = {
+       2,
+       -1, 3, 3119,
+       56, 0, 3450
+};
+static int parser_action_row3121[] = {
+       1,
+       -1, 1, 833
+};
+static int parser_action_row3122[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3123[] = {
+       4,
+       -1, 3, 3122,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3124[] = {
+       1,
+       -1, 1, 861
+};
+static int parser_action_row3125[] = {
+       4,
+       -1, 3, 3124,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3126[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3127[] = {
+       4,
+       -1, 3, 3126,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3128[] = {
+       1,
+       -1, 1, 863
+};
+static int parser_action_row3129[] = {
+       4,
+       -1, 3, 3128,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3130[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3131[] = {
+       4,
+       -1, 3, 3130,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3132[] = {
+       1,
+       -1, 1, 862
+};
+static int parser_action_row3133[] = {
+       4,
+       -1, 3, 3132,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3134[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3135[] = {
+       4,
+       -1, 3, 3134,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3136[] = {
+       1,
+       -1, 1, 864
+};
+static int parser_action_row3137[] = {
+       4,
+       -1, 3, 3136,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3138[] = {
+       2,
+       -1, 3, 3137,
+       56, 0, 3463
+};
+static int parser_action_row3139[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3140[] = {
+       1,
+       -1, 1, 866
+};
+static int parser_action_row3141[] = {
+       1,
+       -1, 1, 896
+};
+static int parser_action_row3142[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3143[] = {
+       1,
+       -1, 1, 868
+};
+static int parser_action_row3144[] = {
+       1,
+       -1, 1, 898
+};
+static int parser_action_row3145[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3146[] = {
+       1,
+       -1, 1, 867
+};
+static int parser_action_row3147[] = {
+       1,
+       -1, 1, 897
+};
+static int parser_action_row3148[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3149[] = {
+       1,
+       -1, 1, 869
+};
+static int parser_action_row3150[] = {
+       1,
+       -1, 1, 899
+};
+static int parser_action_row3151[] = {
+       5,
+       -1, 3, 3150,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3152[] = {
+       2,
+       -1, 3, 3151,
+       48, 0, 3470
+};
+static int parser_action_row3153[] = {
+       5,
+       -1, 3, 3152,
+       32, 0, 3471,
+       48, 0, 3472,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row3154[] = {
+       23,
+       -1, 1, 944,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3155[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3156[] = {
+       1,
+       -1, 1, 1416
+};
+static int parser_action_row3157[] = {
+       2,
+       -1, 3, 3156,
+       10, 0, 3476
+};
+static int parser_action_row3158[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3159[] = {
+       2,
+       -1, 3, 3158,
+       10, 0, 3478
+};
+static int parser_action_row3160[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3161[] = {
+       2,
+       -1, 3, 3160,
+       10, 0, 3480
+};
+static int parser_action_row3162[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3163[] = {
+       2,
+       -1, 3, 3162,
+       10, 0, 3482
+};
+static int parser_action_row3164[] = {
+       4,
+       -1, 1, 971,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3165[] = {
+       1,
+       -1, 1, 89
+};
+static int parser_action_row3166[] = {
+       1,
+       -1, 1, 75
+};
+static int parser_action_row3167[] = {
+       2,
+       -1, 3, 3166,
+       10, 0, 3484
+};
+static int parser_action_row3168[] = {
+       1,
+       -1, 1, 77
+};
+static int parser_action_row3169[] = {
+       2,
+       -1, 3, 3168,
+       10, 0, 3485
+};
+static int parser_action_row3170[] = {
+       1,
+       -1, 1, 76
+};
+static int parser_action_row3171[] = {
+       2,
+       -1, 3, 3170,
+       10, 0, 3486
+};
+static int parser_action_row3172[] = {
+       1,
+       -1, 1, 78
+};
+static int parser_action_row3173[] = {
+       2,
+       -1, 3, 3172,
+       10, 0, 3487
+};
+static int parser_action_row3174[] = {
+       2,
+       -1, 3, 3173,
+       25, 0, 3488
+};
+static int parser_action_row3175[] = {
+       1,
+       -1, 1, 1621
+};
+static int parser_action_row3176[] = {
+       2,
+       -1, 3, 3175,
+       50, 0, 263
+};
+static int parser_action_row3177[] = {
+       1,
+       -1, 1, 1623
+};
+static int parser_action_row3178[] = {
+       2,
+       -1, 3, 3177,
+       50, 0, 263
+};
+static int parser_action_row3179[] = {
+       1,
+       -1, 1, 1625
+};
+static int parser_action_row3180[] = {
+       2,
+       -1, 3, 3179,
+       50, 0, 263
+};
+static int parser_action_row3181[] = {
+       2,
+       -1, 1, 526,
+       25, 1, 1604
+};
+static int parser_action_row3182[] = {
+       2,
+       -1, 1, 511,
+       25, 1, 1589
+};
+static int parser_action_row3183[] = {
+       2,
+       -1, 1, 528,
+       25, 1, 1606
+};
+static int parser_action_row3184[] = {
+       2,
+       -1, 1, 513,
+       25, 1, 1591
+};
+static int parser_action_row3185[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3186[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 720,
+       62, 0, 1959,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 720,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 720,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3187[] = {
+       2,
+       -1, 1, 524,
+       25, 1, 1602
+};
+static int parser_action_row3188[] = {
+       2,
+       -1, 1, 514,
+       25, 1, 1592
+};
+static int parser_action_row3189[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3190[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 726,
+       62, 0, 1970,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 726,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 726,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3191[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3192[] = {
+       42,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 730,
+       61, 0, 282,
+       62, 0, 1975,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 730,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 730,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3193[] = {
+       3,
+       -1, 1, 942,
+       13, 0, 3498,
+       101, 0, 3499
+};
+static int parser_action_row3194[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3195[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3196[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3197[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3198[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3199[] = {
+       1,
+       -1, 1, 812
+};
+static int parser_action_row3200[] = {
+       1,
+       -1, 1, 814
+};
+static int parser_action_row3201[] = {
+       1,
+       -1, 1, 813
+};
+static int parser_action_row3202[] = {
+       1,
+       -1, 1, 815
+};
+static int parser_action_row3203[] = {
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3204[] = {
+       1,
+       -1, 1, 1192
+};
+static int parser_action_row3205[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3206[] = {
+       1,
+       -1, 1, 1470
+};
+static int parser_action_row3207[] = {
+       3,
+       -1, 3, 3206,
+       100, 0, 67,
+       101, 0, 3508
+};
+static int parser_action_row3208[] = {
+       2,
+       -1, 3, 3207,
+       102, 0, 3511
+};
+static int parser_action_row3209[] = {
+       4,
+       -1, 1, 944,
+       13, 0, 3224,
+       100, 0, 67,
+       101, 0, 3225
+};
+static int parser_action_row3210[] = {
+       5,
+       -1, 1, 1110,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1138,
+       97, 1, 1138
+};
+static int parser_action_row3211[] = {
+       2,
+       -1, 1, 941,
+       101, 0, 3514
+};
+static int parser_action_row3212[] = {
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 3515
+};
+static int parser_action_row3213[] = {
+       4,
+       -1, 1, 944,
+       13, 0, 3224,
+       100, 0, 67,
+       101, 0, 3517
+};
+static int parser_action_row3214[] = {
+       3,
+       -1, 1, 1121,
+       76, 1, 1149,
+       97, 1, 1149
+};
+static int parser_action_row3215[] = {
+       1,
+       -1, 1, 1065
+};
+static int parser_action_row3216[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3217[] = {
+       1,
+       -1, 1, 1058
+};
+static int parser_action_row3218[] = {
+       1,
+       -1, 1, 1161
+};
+static int parser_action_row3219[] = {
+       3,
+       -1, 3, 3218,
+       32, 0, 3521,
+       55, 0, 3522
+};
+static int parser_action_row3220[] = {
+       1,
+       -1, 1, 1135
+};
+static int parser_action_row3221[] = {
+       1,
+       -1, 1, 1132
+};
+static int parser_action_row3222[] = {
+       2,
+       -1, 1, 1144,
+       55, 0, 370
+};
+static int parser_action_row3223[] = {
+       3,
+       -1, 1, 1156,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row3224[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 3525
+};
+static int parser_action_row3225[] = {
+       2,
+       -1, 1, 1165,
+       55, 0, 370
+};
+static int parser_action_row3226[] = {
+       3,
+       -1, 1, 1139,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row3227[] = {
+       2,
+       -1, 3, 3226,
+       102, 0, 3528
+};
+static int parser_action_row3228[] = {
+       2,
+       -1, 1, 941,
+       101, 0, 3529
+};
+static int parser_action_row3229[] = {
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 3530
+};
+static int parser_action_row3230[] = {
+       1,
+       -1, 1, 130
+};
+static int parser_action_row3231[] = {
+       1,
+       -1, 1, 340
+};
+static int parser_action_row3232[] = {
+       1,
+       -1, 1, 125
+};
+static int parser_action_row3233[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3234[] = {
+       1,
+       -1, 1, 245
+};
+static int parser_action_row3235[] = {
+       1,
+       -1, 1, 335
+};
+static int parser_action_row3236[] = {
+       1,
+       -1, 1, 325
+};
+static int parser_action_row3237[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3238[] = {
+       1,
+       -1, 1, 295
+};
+static int parser_action_row3239[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3240[] = {
+       2,
+       -1, 1, 285,
+       10, 0, 3535
+};
+static int parser_action_row3241[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3242[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3537
+};
+static int parser_action_row3243[] = {
+       3,
+       -1, 3, 3242,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3244[] = {
+       1,
+       -1, 1, 146
+};
+static int parser_action_row3245[] = {
+       1,
+       -1, 1, 356
+};
+static int parser_action_row3246[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3247[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3248[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3249[] = {
+       2,
+       -1, 3, 3248,
+       16, 0, 3543
+};
+static int parser_action_row3250[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3251[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3252[] = {
+       1,
+       -1, 1, 256
+};
+static int parser_action_row3253[] = {
+       2,
+       -1, 3, 3252,
+       16, 0, 3546
+};
+static int parser_action_row3254[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3255[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3256[] = {
+       3,
+       -1, 3, 3255,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3257[] = {
+       1,
+       -1, 1, 366
+};
+static int parser_action_row3258[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3259[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3551
+};
+static int parser_action_row3260[] = {
+       3,
+       -1, 3, 3259,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3261[] = {
+       1,
+       -1, 1, 186
+};
+static int parser_action_row3262[] = {
+       1,
+       -1, 1, 156
+};
+static int parser_action_row3263[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3264[] = {
+       1,
+       -1, 1, 112
+};
+static int parser_action_row3265[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3266[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3556
+};
+static int parser_action_row3267[] = {
+       3,
+       -1, 3, 3266,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3268[] = {
+       1,
+       -1, 1, 148
+};
+static int parser_action_row3269[] = {
+       1,
+       -1, 1, 358
+};
+static int parser_action_row3270[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3271[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3272[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3273[] = {
+       2,
+       -1, 3, 3272,
+       16, 0, 3562
+};
+static int parser_action_row3274[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3275[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3276[] = {
+       1,
+       -1, 1, 258
+};
+static int parser_action_row3277[] = {
+       2,
+       -1, 3, 3276,
+       16, 0, 3565
+};
+static int parser_action_row3278[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3279[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3280[] = {
+       3,
+       -1, 3, 3279,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3281[] = {
+       1,
+       -1, 1, 368
+};
+static int parser_action_row3282[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3283[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3570
+};
+static int parser_action_row3284[] = {
+       3,
+       -1, 3, 3283,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3285[] = {
+       1,
+       -1, 1, 188
+};
+static int parser_action_row3286[] = {
+       1,
+       -1, 1, 158
+};
+static int parser_action_row3287[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3288[] = {
+       1,
+       -1, 1, 114
+};
+static int parser_action_row3289[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3290[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3575
+};
+static int parser_action_row3291[] = {
+       3,
+       -1, 3, 3290,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3292[] = {
+       1,
+       -1, 1, 147
+};
+static int parser_action_row3293[] = {
+       1,
+       -1, 1, 357
+};
+static int parser_action_row3294[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3295[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3296[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3297[] = {
+       2,
+       -1, 3, 3296,
+       16, 0, 3581
+};
+static int parser_action_row3298[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3299[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3300[] = {
+       1,
+       -1, 1, 257
+};
+static int parser_action_row3301[] = {
+       2,
+       -1, 3, 3300,
+       16, 0, 3584
+};
+static int parser_action_row3302[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3303[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3304[] = {
+       3,
+       -1, 3, 3303,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3305[] = {
+       1,
+       -1, 1, 367
+};
+static int parser_action_row3306[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3307[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3589
+};
+static int parser_action_row3308[] = {
+       3,
+       -1, 3, 3307,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3309[] = {
+       1,
+       -1, 1, 187
+};
+static int parser_action_row3310[] = {
+       1,
+       -1, 1, 157
+};
+static int parser_action_row3311[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3312[] = {
+       1,
+       -1, 1, 113
+};
+static int parser_action_row3313[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3314[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3594
+};
+static int parser_action_row3315[] = {
+       3,
+       -1, 3, 3314,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3316[] = {
+       1,
+       -1, 1, 149
+};
+static int parser_action_row3317[] = {
+       1,
+       -1, 1, 359
+};
+static int parser_action_row3318[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3319[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3320[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3321[] = {
+       2,
+       -1, 3, 3320,
+       16, 0, 3600
+};
+static int parser_action_row3322[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3323[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3324[] = {
+       1,
+       -1, 1, 259
+};
+static int parser_action_row3325[] = {
+       2,
+       -1, 3, 3324,
+       16, 0, 3603
+};
+static int parser_action_row3326[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3327[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3328[] = {
+       3,
+       -1, 3, 3327,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3329[] = {
+       1,
+       -1, 1, 369
+};
+static int parser_action_row3330[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3331[] = {
+       3,
+       -1, 1, 449,
+       4, 0, 658,
+       16, 0, 3608
+};
+static int parser_action_row3332[] = {
+       3,
+       -1, 3, 3331,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3333[] = {
+       1,
+       -1, 1, 189
+};
+static int parser_action_row3334[] = {
+       1,
+       -1, 1, 159
+};
+static int parser_action_row3335[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3336[] = {
+       1,
+       -1, 1, 115
+};
+static int parser_action_row3337[] = {
+       1,
+       -1, 1, 215
+};
+static int parser_action_row3338[] = {
+       1,
+       -1, 1, 205
+};
+static int parser_action_row3339[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3340[] = {
+       1,
+       -1, 1, 395
+};
+static int parser_action_row3341[] = {
+       1,
+       -1, 1, 260
+};
+static int parser_action_row3342[] = {
+       1,
+       -1, 1, 300
+};
+static int parser_action_row3343[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3344[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3345[] = {
+       3,
+       -1, 3, 3344,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3346[] = {
+       1,
+       -1, 1, 231
+};
+static int parser_action_row3347[] = {
+       1,
+       -1, 1, 311
+};
+static int parser_action_row3348[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3349[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3350[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3351[] = {
+       2,
+       -1, 1, 271,
+       10, 0, 3619
+};
+static int parser_action_row3352[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3353[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3354[] = {
+       1,
+       -1, 1, 191
+};
+static int parser_action_row3355[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3356[] = {
+       1,
+       -1, 1, 381
+};
+static int parser_action_row3357[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3358[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3359[] = {
+       3,
+       -1, 3, 3358,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3360[] = {
+       1,
+       -1, 1, 371
+};
+static int parser_action_row3361[] = {
+       1,
+       -1, 1, 161
+};
+static int parser_action_row3362[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3363[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3364[] = {
+       3,
+       -1, 3, 3363,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3365[] = {
+       1,
+       -1, 1, 233
+};
+static int parser_action_row3366[] = {
+       1,
+       -1, 1, 313
+};
+static int parser_action_row3367[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3368[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3369[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3370[] = {
+       2,
+       -1, 1, 273,
+       10, 0, 3632
+};
+static int parser_action_row3371[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3372[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3373[] = {
+       1,
+       -1, 1, 193
+};
+static int parser_action_row3374[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3375[] = {
+       1,
+       -1, 1, 383
+};
+static int parser_action_row3376[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3377[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3378[] = {
+       3,
+       -1, 3, 3377,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3379[] = {
+       1,
+       -1, 1, 373
+};
+static int parser_action_row3380[] = {
+       1,
+       -1, 1, 163
+};
+static int parser_action_row3381[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3382[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3383[] = {
+       3,
+       -1, 3, 3382,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3384[] = {
+       1,
+       -1, 1, 232
+};
+static int parser_action_row3385[] = {
+       1,
+       -1, 1, 312
+};
+static int parser_action_row3386[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3387[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3388[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3389[] = {
+       2,
+       -1, 1, 272,
+       10, 0, 3645
+};
+static int parser_action_row3390[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3391[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3392[] = {
+       1,
+       -1, 1, 192
+};
+static int parser_action_row3393[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3394[] = {
+       1,
+       -1, 1, 382
+};
+static int parser_action_row3395[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3396[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3397[] = {
+       3,
+       -1, 3, 3396,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3398[] = {
+       1,
+       -1, 1, 372
+};
+static int parser_action_row3399[] = {
+       1,
+       -1, 1, 162
+};
+static int parser_action_row3400[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3401[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3402[] = {
+       3,
+       -1, 3, 3401,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3403[] = {
+       1,
+       -1, 1, 234
+};
+static int parser_action_row3404[] = {
+       1,
+       -1, 1, 314
+};
+static int parser_action_row3405[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3406[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3407[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3408[] = {
+       2,
+       -1, 1, 274,
+       10, 0, 3658
+};
+static int parser_action_row3409[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3410[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3411[] = {
+       1,
+       -1, 1, 194
+};
+static int parser_action_row3412[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3413[] = {
+       1,
+       -1, 1, 384
+};
+static int parser_action_row3414[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3415[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3416[] = {
+       3,
+       -1, 3, 3415,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3417[] = {
+       1,
+       -1, 1, 374
+};
+static int parser_action_row3418[] = {
+       1,
+       -1, 1, 164
+};
+static int parser_action_row3419[] = {
+       1,
+       -1, 1, 220
+};
+static int parser_action_row3420[] = {
+       1,
+       -1, 1, 1248
+};
+static int parser_action_row3421[] = {
+       1,
+       -1, 1, 1276
+};
+static int parser_action_row3422[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3423[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3424[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3425[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3426[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3427[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3428[] = {
+       13,
+       -1, 1, 1377,
+       62, 0, 3671,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3429[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3430[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3431[] = {
+       13,
+       -1, 1, 1381,
+       62, 0, 3675,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3432[] = {
+       14,
+       -1, 1, 1380,
+       55, 0, 370,
+       62, 0, 3677,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3433[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3434[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3435[] = {
+       13,
+       -1, 1, 1383,
+       62, 0, 3682,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3436[] = {
+       13,
+       -1, 1, 1373,
+       62, 0, 3684,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3437[] = {
+       14,
+       -1, 1, 1386,
+       55, 0, 370,
+       62, 0, 3686,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3438[] = {
+       15,
+       -1, 1, 1390,
+       55, 0, 370,
+       61, 0, 282,
+       62, 0, 3689,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3439[] = {
+       22,
+       -1, 1, 942,
+       57, 0, 855,
+       77, 0, 856,
+       78, 0, 857,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 858,
+       86, 0, 859,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       101, 0, 3692
+};
+static int parser_action_row3440[] = {
+       1,
+       -1, 1, 1267
+};
+static int parser_action_row3441[] = {
+       1,
+       -1, 1, 1295
+};
+static int parser_action_row3442[] = {
+       2,
+       -1, 3, 3441,
+       56, 0, 3693
+};
+static int parser_action_row3443[] = {
+       2,
+       -1, 3, 3442,
+       56, 0, 3694
+};
+static int parser_action_row3444[] = {
+       2,
+       -1, 3, 3443,
+       56, 0, 3695
+};
+static int parser_action_row3445[] = {
+       2,
+       -1, 3, 3444,
+       56, 0, 3696
+};
+static int parser_action_row3446[] = {
+       2,
+       -1, 3, 3445,
+       56, 0, 3697
+};
+static int parser_action_row3447[] = {
+       1,
+       -1, 1, 838
+};
+static int parser_action_row3448[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3449[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3450[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3451[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3452[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3453[] = {
+       1,
+       -1, 1, 871
+};
+static int parser_action_row3454[] = {
+       1,
+       -1, 1, 901
+};
+static int parser_action_row3455[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3456[] = {
+       1,
+       -1, 1, 873
+};
+static int parser_action_row3457[] = {
+       1,
+       -1, 1, 903
+};
+static int parser_action_row3458[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3459[] = {
+       1,
+       -1, 1, 872
+};
+static int parser_action_row3460[] = {
+       1,
+       -1, 1, 902
+};
+static int parser_action_row3461[] = {
+       55,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 236,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       32, 0, 237,
+       34, 0, 541,
+       35, 0, 542,
+       36, 0, 543,
+       37, 0, 544,
+       38, 0, 56,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       48, 0, 537,
+       49, 0, 240,
+       51, 0, 62,
+       52, 0, 545,
+       53, 0, 546,
+       55, 0, 65,
+       57, 0, 547,
+       77, 0, 548,
+       78, 0, 549,
+       79, 0, 550,
+       80, 0, 551,
+       81, 0, 552,
+       82, 0, 553,
+       83, 0, 554,
+       84, 0, 555,
+       85, 0, 556,
+       86, 0, 557,
+       87, 0, 558,
+       88, 0, 559,
+       89, 0, 560,
+       90, 0, 561,
+       91, 0, 562,
+       92, 0, 563,
+       93, 0, 564,
+       94, 0, 565,
+       95, 0, 566,
+       98, 0, 270,
+       100, 0, 517,
+       101, 0, 567,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3462[] = {
+       1,
+       -1, 1, 874
+};
+static int parser_action_row3463[] = {
+       1,
+       -1, 1, 904
+};
+static int parser_action_row3464[] = {
+       5,
+       -1, 3, 3463,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3465[] = {
+       2,
+       -1, 3, 3464,
+       56, 0, 3708
+};
+static int parser_action_row3466[] = {
+       2,
+       -1, 3, 3465,
+       56, 0, 3709
+};
+static int parser_action_row3467[] = {
+       2,
+       -1, 3, 3466,
+       56, 0, 3710
+};
+static int parser_action_row3468[] = {
+       2,
+       -1, 3, 3467,
+       56, 0, 3711
+};
+static int parser_action_row3469[] = {
+       4,
+       -1, 3, 3468,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3470[] = {
+       1,
+       -1, 1, 875
+};
+static int parser_action_row3471[] = {
+       1,
+       -1, 1, 462
+};
+static int parser_action_row3472[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3473[] = {
+       5,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row3474[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3475[] = {
+       1,
+       -1, 1, 1301
+};
+static int parser_action_row3476[] = {
+       2,
+       -1, 3, 3475,
+       56, 0, 3716
+};
+static int parser_action_row3477[] = {
+       1,
+       -1, 1, 80
+};
+static int parser_action_row3478[] = {
+       2,
+       -1, 3, 3477,
+       10, 0, 3717
+};
+static int parser_action_row3479[] = {
+       1,
+       -1, 1, 82
+};
+static int parser_action_row3480[] = {
+       2,
+       -1, 3, 3479,
+       10, 0, 3718
+};
+static int parser_action_row3481[] = {
+       1,
+       -1, 1, 81
+};
+static int parser_action_row3482[] = {
+       2,
+       -1, 3, 3481,
+       10, 0, 3719
+};
+static int parser_action_row3483[] = {
+       1,
+       -1, 1, 83
+};
+static int parser_action_row3484[] = {
+       2,
+       -1, 3, 3483,
+       10, 0, 3720
+};
+static int parser_action_row3485[] = {
+       1,
+       -1, 1, 85
+};
+static int parser_action_row3486[] = {
+       1,
+       -1, 1, 87
+};
+static int parser_action_row3487[] = {
+       1,
+       -1, 1, 86
+};
+static int parser_action_row3488[] = {
+       1,
+       -1, 1, 88
+};
+static int parser_action_row3489[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 2477,
+       11, 0, 218,
+       13, 0, 1355,
+       16, 0, 1356,
+       17, 0, 42,
+       23, 0, 1357,
+       26, 0, 1359,
+       27, 0, 1360,
+       28, 0, 1361,
+       34, 0, 1362,
+       35, 0, 1363,
+       36, 0, 1364,
+       37, 0, 1365,
+       38, 0, 1366,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 1367,
+       52, 0, 1368,
+       53, 0, 1369,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 1370,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3490[] = {
+       2,
+       -1, 1, 623,
+       25, 1, 1620
+};
+static int parser_action_row3491[] = {
+       2,
+       -1, 1, 625,
+       25, 1, 1622
+};
+static int parser_action_row3492[] = {
+       2,
+       -1, 1, 630,
+       25, 1, 1624
+};
+static int parser_action_row3493[] = {
+       2,
+       -1, 1, 527,
+       25, 1, 1605
+};
+static int parser_action_row3494[] = {
+       2,
+       -1, 1, 512,
+       25, 1, 1590
+};
+static int parser_action_row3495[] = {
+       2,
+       -1, 1, 529,
+       25, 1, 1607
+};
+static int parser_action_row3496[] = {
+       2,
+       -1, 1, 515,
+       25, 1, 1593
+};
+static int parser_action_row3497[] = {
+       2,
+       -1, 1, 531,
+       25, 1, 1609
+};
+static int parser_action_row3498[] = {
+       2,
+       -1, 1, 517,
+       25, 1, 1595
+};
+static int parser_action_row3499[] = {
+       26,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 617,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3500[] = {
+       41,
+       -1, 1, 928,
+       11, 0, 167,
+       13, 0, 168,
+       23, 0, 169,
+       32, 0, 170,
+       39, 0, 171,
+       41, 0, 172,
+       42, 1, 944,
+       43, 0, 173,
+       44, 0, 174,
+       45, 0, 175,
+       46, 0, 176,
+       49, 0, 177,
+       55, 0, 178,
+       57, 1, 728,
+       62, 0, 2389,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294,
+       76, 1, 728,
+       77, 0, 179,
+       78, 0, 180,
+       85, 0, 181,
+       86, 0, 182,
+       97, 1, 728,
+       100, 0, 67,
+       101, 0, 183,
+       102, 1, 944,
+       103, 0, 184,
+       104, 0, 185,
+       105, 0, 186,
+       106, 0, 72,
+       109, 0, 187
+};
+static int parser_action_row3501[] = {
+       1,
+       -1, 1, 641
+};
+static int parser_action_row3502[] = {
+       1,
+       -1, 1, 817
+};
+static int parser_action_row3503[] = {
+       1,
+       -1, 1, 819
+};
+static int parser_action_row3504[] = {
+       1,
+       -1, 1, 818
+};
+static int parser_action_row3505[] = {
+       1,
+       -1, 1, 820
+};
+static int parser_action_row3506[] = {
+       2,
+       -1, 3, 3505,
+       10, 0, 3724
+};
+static int parser_action_row3507[] = {
+       4,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2,
+       99, 0, 3
+};
+static int parser_action_row3508[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3509[] = {
+       3,
+       -1, 1, 1168,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row3510[] = {
+       2,
+       -1, 3, 3509,
+       101, 0, 3728
+};
+static int parser_action_row3511[] = {
+       3,
+       -1, 3, 3510,
+       100, 0, 67,
+       101, 0, 3729
+};
+static int parser_action_row3512[] = {
+       3,
+       -1, 1, 1104,
+       76, 1, 1132,
+       97, 1, 1132
+};
+static int parser_action_row3513[] = {
+       2,
+       -1, 3, 3512,
+       102, 0, 3731
+};
+static int parser_action_row3514[] = {
+       3,
+       -1, 1, 1107,
+       76, 1, 1135,
+       97, 1, 1135
+};
+static int parser_action_row3515[] = {
+       4,
+       -1, 1, 1116,
+       55, 0, 370,
+       76, 1, 1144,
+       97, 1, 1144
+};
+static int parser_action_row3516[] = {
+       5,
+       -1, 1, 1128,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1156,
+       97, 1, 1156
+};
+static int parser_action_row3517[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 3734
+};
+static int parser_action_row3518[] = {
+       5,
+       -1, 1, 1111,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1139,
+       97, 1, 1139
+};
+static int parser_action_row3519[] = {
+       2,
+       -1, 1, 941,
+       101, 0, 3736
+};
+static int parser_action_row3520[] = {
+       3,
+       -1, 1, 943,
+       100, 0, 67,
+       101, 0, 3737
+};
+static int parser_action_row3521[] = {
+       1,
+       -1, 1, 1059
+};
+static int parser_action_row3522[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3523[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3524[] = {
+       1,
+       -1, 1, 1141
+};
+static int parser_action_row3525[] = {
+       1,
+       -1, 1, 1153
+};
+static int parser_action_row3526[] = {
+       2,
+       -1, 1, 1150,
+       55, 0, 370
+};
+static int parser_action_row3527[] = {
+       1,
+       -1, 1, 1162
+};
+static int parser_action_row3528[] = {
+       1,
+       -1, 1, 1136
+};
+static int parser_action_row3529[] = {
+       1,
+       -1, 1, 1133
+};
+static int parser_action_row3530[] = {
+       2,
+       -1, 1, 1145,
+       55, 0, 370
+};
+static int parser_action_row3531[] = {
+       3,
+       -1, 1, 1157,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row3532[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 3744
+};
+static int parser_action_row3533[] = {
+       1,
+       -1, 1, 135
+};
+static int parser_action_row3534[] = {
+       1,
+       -1, 1, 345
+};
+static int parser_action_row3535[] = {
+       1,
+       -1, 1, 265
+};
+static int parser_action_row3536[] = {
+       1,
+       -1, 1, 305
+};
+static int parser_action_row3537[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3538[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3539[] = {
+       3,
+       -1, 3, 3538,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3540[] = {
+       1,
+       -1, 1, 236
+};
+static int parser_action_row3541[] = {
+       1,
+       -1, 1, 316
+};
+static int parser_action_row3542[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3543[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3544[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3545[] = {
+       2,
+       -1, 1, 276,
+       10, 0, 3751
+};
+static int parser_action_row3546[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3547[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3548[] = {
+       1,
+       -1, 1, 196
+};
+static int parser_action_row3549[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3550[] = {
+       1,
+       -1, 1, 386
+};
+static int parser_action_row3551[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3552[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3553[] = {
+       3,
+       -1, 3, 3552,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3554[] = {
+       1,
+       -1, 1, 376
+};
+static int parser_action_row3555[] = {
+       1,
+       -1, 1, 166
+};
+static int parser_action_row3556[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3557[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3558[] = {
+       3,
+       -1, 3, 3557,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3559[] = {
+       1,
+       -1, 1, 238
+};
+static int parser_action_row3560[] = {
+       1,
+       -1, 1, 318
+};
+static int parser_action_row3561[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3562[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3563[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3564[] = {
+       2,
+       -1, 1, 278,
+       10, 0, 3764
+};
+static int parser_action_row3565[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3566[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3567[] = {
+       1,
+       -1, 1, 198
+};
+static int parser_action_row3568[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3569[] = {
+       1,
+       -1, 1, 388
+};
+static int parser_action_row3570[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3571[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3572[] = {
+       3,
+       -1, 3, 3571,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3573[] = {
+       1,
+       -1, 1, 378
+};
+static int parser_action_row3574[] = {
+       1,
+       -1, 1, 168
+};
+static int parser_action_row3575[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3576[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3577[] = {
+       3,
+       -1, 3, 3576,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3578[] = {
+       1,
+       -1, 1, 237
+};
+static int parser_action_row3579[] = {
+       1,
+       -1, 1, 317
+};
+static int parser_action_row3580[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3581[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3582[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3583[] = {
+       2,
+       -1, 1, 277,
+       10, 0, 3777
+};
+static int parser_action_row3584[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3585[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3586[] = {
+       1,
+       -1, 1, 197
+};
+static int parser_action_row3587[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3588[] = {
+       1,
+       -1, 1, 387
+};
+static int parser_action_row3589[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3590[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3591[] = {
+       3,
+       -1, 3, 3590,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3592[] = {
+       1,
+       -1, 1, 377
+};
+static int parser_action_row3593[] = {
+       1,
+       -1, 1, 167
+};
+static int parser_action_row3594[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3595[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3596[] = {
+       3,
+       -1, 3, 3595,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3597[] = {
+       1,
+       -1, 1, 239
+};
+static int parser_action_row3598[] = {
+       1,
+       -1, 1, 319
+};
+static int parser_action_row3599[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3600[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3601[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3602[] = {
+       2,
+       -1, 1, 279,
+       10, 0, 3790
+};
+static int parser_action_row3603[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3604[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3605[] = {
+       1,
+       -1, 1, 199
+};
+static int parser_action_row3606[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3607[] = {
+       1,
+       -1, 1, 389
+};
+static int parser_action_row3608[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3609[] = {
+       35,
+       -1, 1, 944,
+       0, 0, 1,
+       1, 0, 2,
+       10, 0, 808,
+       11, 0, 218,
+       13, 0, 39,
+       16, 0, 41,
+       17, 0, 42,
+       23, 0, 48,
+       26, 0, 49,
+       27, 0, 50,
+       28, 0, 51,
+       34, 0, 52,
+       35, 0, 53,
+       36, 0, 54,
+       37, 0, 55,
+       38, 0, 56,
+       39, 0, 57,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       51, 0, 62,
+       52, 0, 63,
+       53, 0, 64,
+       55, 0, 65,
+       57, 0, 66,
+       99, 0, 3,
+       100, 0, 67,
+       101, 0, 68,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3610[] = {
+       3,
+       -1, 3, 3609,
+       29, 0, 96,
+       113, 0, 97
+};
+static int parser_action_row3611[] = {
+       1,
+       -1, 1, 379
+};
+static int parser_action_row3612[] = {
+       1,
+       -1, 1, 169
+};
+static int parser_action_row3613[] = {
+       1,
+       -1, 1, 225
+};
+static int parser_action_row3614[] = {
+       1,
+       -1, 1, 121
+};
+static int parser_action_row3615[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3616[] = {
+       1,
+       -1, 1, 241
+};
+static int parser_action_row3617[] = {
+       1,
+       -1, 1, 331
+};
+static int parser_action_row3618[] = {
+       1,
+       -1, 1, 321
+};
+static int parser_action_row3619[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3620[] = {
+       1,
+       -1, 1, 291
+};
+static int parser_action_row3621[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3622[] = {
+       2,
+       -1, 1, 281,
+       10, 0, 3800
+};
+static int parser_action_row3623[] = {
+       1,
+       -1, 1, 211
+};
+static int parser_action_row3624[] = {
+       1,
+       -1, 1, 201
+};
+static int parser_action_row3625[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3626[] = {
+       1,
+       -1, 1, 391
+};
+static int parser_action_row3627[] = {
+       1,
+       -1, 1, 123
+};
+static int parser_action_row3628[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3629[] = {
+       1,
+       -1, 1, 243
+};
+static int parser_action_row3630[] = {
+       1,
+       -1, 1, 333
+};
+static int parser_action_row3631[] = {
+       1,
+       -1, 1, 323
+};
+static int parser_action_row3632[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3633[] = {
+       1,
+       -1, 1, 293
+};
+static int parser_action_row3634[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3635[] = {
+       2,
+       -1, 1, 283,
+       10, 0, 3805
+};
+static int parser_action_row3636[] = {
+       1,
+       -1, 1, 213
+};
+static int parser_action_row3637[] = {
+       1,
+       -1, 1, 203
+};
+static int parser_action_row3638[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3639[] = {
+       1,
+       -1, 1, 393
+};
+static int parser_action_row3640[] = {
+       1,
+       -1, 1, 122
+};
+static int parser_action_row3641[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3642[] = {
+       1,
+       -1, 1, 242
+};
+static int parser_action_row3643[] = {
+       1,
+       -1, 1, 332
+};
+static int parser_action_row3644[] = {
+       1,
+       -1, 1, 322
+};
+static int parser_action_row3645[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3646[] = {
+       1,
+       -1, 1, 292
+};
+static int parser_action_row3647[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3648[] = {
+       2,
+       -1, 1, 282,
+       10, 0, 3810
+};
+static int parser_action_row3649[] = {
+       1,
+       -1, 1, 212
+};
+static int parser_action_row3650[] = {
+       1,
+       -1, 1, 202
+};
+static int parser_action_row3651[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3652[] = {
+       1,
+       -1, 1, 392
+};
+static int parser_action_row3653[] = {
+       1,
+       -1, 1, 124
+};
+static int parser_action_row3654[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3655[] = {
+       1,
+       -1, 1, 244
+};
+static int parser_action_row3656[] = {
+       1,
+       -1, 1, 334
+};
+static int parser_action_row3657[] = {
+       1,
+       -1, 1, 324
+};
+static int parser_action_row3658[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3659[] = {
+       1,
+       -1, 1, 294
+};
+static int parser_action_row3660[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3661[] = {
+       2,
+       -1, 1, 284,
+       10, 0, 3815
+};
+static int parser_action_row3662[] = {
+       1,
+       -1, 1, 214
+};
+static int parser_action_row3663[] = {
+       1,
+       -1, 1, 204
+};
+static int parser_action_row3664[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3665[] = {
+       1,
+       -1, 1, 394
+};
+static int parser_action_row3666[] = {
+       1,
+       -1, 1, 1247
+};
+static int parser_action_row3667[] = {
+       1,
+       -1, 1, 1275
+};
+static int parser_action_row3668[] = {
+       1,
+       -1, 1, 1244
+};
+static int parser_action_row3669[] = {
+       1,
+       -1, 1, 1272
+};
+static int parser_action_row3670[] = {
+       1,
+       -1, 1, 1250
+};
+static int parser_action_row3671[] = {
+       1,
+       -1, 1, 1278
+};
+static int parser_action_row3672[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3673[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3674[] = {
+       1,
+       -1, 1, 1254
+};
+static int parser_action_row3675[] = {
+       1,
+       -1, 1, 1282
+};
+static int parser_action_row3676[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3677[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3678[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3679[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3680[] = {
+       13,
+       -1, 1, 1379,
+       62, 0, 3823,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3681[] = {
+       1,
+       -1, 1, 1256
+};
+static int parser_action_row3682[] = {
+       1,
+       -1, 1, 1284
+};
+static int parser_action_row3683[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3684[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3685[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3686[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3687[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3688[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3689[] = {
+       13,
+       -1, 1, 1385,
+       62, 0, 3831,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3690[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3691[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3692[] = {
+       13,
+       -1, 1, 1389,
+       62, 0, 3835,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3693[] = {
+       14,
+       -1, 1, 1388,
+       55, 0, 370,
+       62, 0, 3837,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3694[] = {
+       1,
+       -1, 1, 757
+};
+static int parser_action_row3695[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3696[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3697[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3698[] = {
+       2,
+       -1, 1, 800,
+       98, 0, 270
+};
+static int parser_action_row3699[] = {
+       1,
+       -1, 1, 834
+};
+static int parser_action_row3700[] = {
+       1,
+       -1, 1, 836
+};
+static int parser_action_row3701[] = {
+       1,
+       -1, 1, 835
+};
+static int parser_action_row3702[] = {
+       1,
+       -1, 1, 837
+};
+static int parser_action_row3703[] = {
+       2,
+       -1, 3, 3702,
+       56, 0, 3844
+};
+static int parser_action_row3704[] = {
+       2,
+       -1, 3, 3703,
+       56, 0, 3845
+};
+static int parser_action_row3705[] = {
+       2,
+       -1, 3, 3704,
+       56, 0, 3846
+};
+static int parser_action_row3706[] = {
+       2,
+       -1, 3, 3705,
+       56, 0, 3847
+};
+static int parser_action_row3707[] = {
+       4,
+       -1, 3, 3706,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3708[] = {
+       1,
+       -1, 1, 880
+};
+static int parser_action_row3709[] = {
+       5,
+       -1, 3, 3708,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3710[] = {
+       5,
+       -1, 3, 3709,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3711[] = {
+       5,
+       -1, 3, 3710,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3712[] = {
+       5,
+       -1, 3, 3711,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3713[] = {
+       1,
+       -1, 1, 885
+};
+static int parser_action_row3714[] = {
+       2,
+       -1, 3, 3713,
+       48, 0, 3857
+};
+static int parser_action_row3715[] = {
+       2,
+       -1, 3, 3714,
+       56, 0, 3858
+};
+static int parser_action_row3716[] = {
+       2,
+       -1, 3, 3715,
+       56, 0, 3859
+};
+static int parser_action_row3717[] = {
+       1,
+       -1, 1, 1417
+};
+static int parser_action_row3718[] = {
+       1,
+       -1, 1, 90
+};
+static int parser_action_row3719[] = {
+       1,
+       -1, 1, 92
+};
+static int parser_action_row3720[] = {
+       1,
+       -1, 1, 91
+};
+static int parser_action_row3721[] = {
+       1,
+       -1, 1, 93
+};
+static int parser_action_row3722[] = {
+       1,
+       -1, 1, 1617
+};
+static int parser_action_row3723[] = {
+       2,
+       -1, 1, 530,
+       25, 1, 1608
+};
+static int parser_action_row3724[] = {
+       2,
+       -1, 1, 516,
+       25, 1, 1594
+};
+static int parser_action_row3725[] = {
+       1,
+       -1, 1, 1190
+};
+static int parser_action_row3726[] = {
+       2,
+       -1, 3, 3725,
+       10, 0, 3860
+};
+static int parser_action_row3727[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3728[] = {
+       1,
+       -1, 1, 1167
+};
+static int parser_action_row3729[] = {
+       2,
+       -1, 1, 1170,
+       55, 0, 370
+};
+static int parser_action_row3730[] = {
+       3,
+       -1, 1, 1174,
+       55, 0, 370,
+       61, 0, 282
+};
+static int parser_action_row3731[] = {
+       2,
+       -1, 3, 3730,
+       101, 0, 3864
+};
+static int parser_action_row3732[] = {
+       3,
+       -1, 1, 1105,
+       76, 1, 1133,
+       97, 1, 1133
+};
+static int parser_action_row3733[] = {
+       3,
+       -1, 1, 1113,
+       76, 1, 1141,
+       97, 1, 1141
+};
+static int parser_action_row3734[] = {
+       3,
+       -1, 1, 1125,
+       76, 1, 1153,
+       97, 1, 1153
+};
+static int parser_action_row3735[] = {
+       4,
+       -1, 1, 1122,
+       55, 0, 370,
+       76, 1, 1150,
+       97, 1, 1150
+};
+static int parser_action_row3736[] = {
+       3,
+       -1, 1, 1108,
+       76, 1, 1136,
+       97, 1, 1136
+};
+static int parser_action_row3737[] = {
+       4,
+       -1, 1, 1117,
+       55, 0, 370,
+       76, 1, 1145,
+       97, 1, 1145
+};
+static int parser_action_row3738[] = {
+       5,
+       -1, 1, 1129,
+       55, 0, 370,
+       61, 0, 282,
+       76, 1, 1157,
+       97, 1, 1157
+};
+static int parser_action_row3739[] = {
+       2,
+       -1, 1, 942,
+       101, 0, 3868
+};
+static int parser_action_row3740[] = {
+       2,
+       -1, 3, 3739,
+       46, 0, 3869
+};
+static int parser_action_row3741[] = {
+       5,
+       -1, 3, 3740,
+       32, 0, 3870,
+       48, 0, 537,
+       100, 0, 517,
+       101, 0, 518
+};
+static int parser_action_row3742[] = {
+       1,
+       -1, 1, 1147
+};
+static int parser_action_row3743[] = {
+       1,
+       -1, 1, 1142
+};
+static int parser_action_row3744[] = {
+       1,
+       -1, 1, 1154
+};
+static int parser_action_row3745[] = {
+       2,
+       -1, 1, 1151,
+       55, 0, 370
+};
+static int parser_action_row3746[] = {
+       1,
+       -1, 1, 126
+};
+static int parser_action_row3747[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3748[] = {
+       1,
+       -1, 1, 246
+};
+static int parser_action_row3749[] = {
+       1,
+       -1, 1, 336
+};
+static int parser_action_row3750[] = {
+       1,
+       -1, 1, 326
+};
+static int parser_action_row3751[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3752[] = {
+       1,
+       -1, 1, 296
+};
+static int parser_action_row3753[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3754[] = {
+       2,
+       -1, 1, 286,
+       10, 0, 3876
+};
+static int parser_action_row3755[] = {
+       1,
+       -1, 1, 216
+};
+static int parser_action_row3756[] = {
+       1,
+       -1, 1, 206
+};
+static int parser_action_row3757[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3758[] = {
+       1,
+       -1, 1, 396
+};
+static int parser_action_row3759[] = {
+       1,
+       -1, 1, 128
+};
+static int parser_action_row3760[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3761[] = {
+       1,
+       -1, 1, 248
+};
+static int parser_action_row3762[] = {
+       1,
+       -1, 1, 338
+};
+static int parser_action_row3763[] = {
+       1,
+       -1, 1, 328
+};
+static int parser_action_row3764[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3765[] = {
+       1,
+       -1, 1, 298
+};
+static int parser_action_row3766[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3767[] = {
+       2,
+       -1, 1, 288,
+       10, 0, 3881
+};
+static int parser_action_row3768[] = {
+       1,
+       -1, 1, 218
+};
+static int parser_action_row3769[] = {
+       1,
+       -1, 1, 208
+};
+static int parser_action_row3770[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3771[] = {
+       1,
+       -1, 1, 398
+};
+static int parser_action_row3772[] = {
+       1,
+       -1, 1, 127
+};
+static int parser_action_row3773[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3774[] = {
+       1,
+       -1, 1, 247
+};
+static int parser_action_row3775[] = {
+       1,
+       -1, 1, 337
+};
+static int parser_action_row3776[] = {
+       1,
+       -1, 1, 327
+};
+static int parser_action_row3777[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3778[] = {
+       1,
+       -1, 1, 297
+};
+static int parser_action_row3779[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3780[] = {
+       2,
+       -1, 1, 287,
+       10, 0, 3886
+};
+static int parser_action_row3781[] = {
+       1,
+       -1, 1, 217
+};
+static int parser_action_row3782[] = {
+       1,
+       -1, 1, 207
+};
+static int parser_action_row3783[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3784[] = {
+       1,
+       -1, 1, 397
+};
+static int parser_action_row3785[] = {
+       1,
+       -1, 1, 129
+};
+static int parser_action_row3786[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3787[] = {
+       1,
+       -1, 1, 249
+};
+static int parser_action_row3788[] = {
+       1,
+       -1, 1, 339
+};
+static int parser_action_row3789[] = {
+       1,
+       -1, 1, 329
+};
+static int parser_action_row3790[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3791[] = {
+       1,
+       -1, 1, 299
+};
+static int parser_action_row3792[] = {
+       2,
+       -1, 1, 404,
+       15, 0, 647
+};
+static int parser_action_row3793[] = {
+       2,
+       -1, 1, 289,
+       10, 0, 3891
+};
+static int parser_action_row3794[] = {
+       1,
+       -1, 1, 219
+};
+static int parser_action_row3795[] = {
+       1,
+       -1, 1, 209
+};
+static int parser_action_row3796[] = {
+       2,
+       -1, 1, 955,
+       10, 0, 1248
+};
+static int parser_action_row3797[] = {
+       1,
+       -1, 1, 399
+};
+static int parser_action_row3798[] = {
+       1,
+       -1, 1, 131
+};
+static int parser_action_row3799[] = {
+       1,
+       -1, 1, 341
+};
+static int parser_action_row3800[] = {
+       1,
+       -1, 1, 261
+};
+static int parser_action_row3801[] = {
+       1,
+       -1, 1, 301
+};
+static int parser_action_row3802[] = {
+       1,
+       -1, 1, 221
+};
+static int parser_action_row3803[] = {
+       1,
+       -1, 1, 133
+};
+static int parser_action_row3804[] = {
+       1,
+       -1, 1, 343
+};
+static int parser_action_row3805[] = {
+       1,
+       -1, 1, 263
+};
+static int parser_action_row3806[] = {
+       1,
+       -1, 1, 303
+};
+static int parser_action_row3807[] = {
+       1,
+       -1, 1, 223
+};
+static int parser_action_row3808[] = {
+       1,
+       -1, 1, 132
+};
+static int parser_action_row3809[] = {
+       1,
+       -1, 1, 342
+};
+static int parser_action_row3810[] = {
+       1,
+       -1, 1, 262
+};
+static int parser_action_row3811[] = {
+       1,
+       -1, 1, 302
+};
+static int parser_action_row3812[] = {
+       1,
+       -1, 1, 222
+};
+static int parser_action_row3813[] = {
+       1,
+       -1, 1, 134
+};
+static int parser_action_row3814[] = {
+       1,
+       -1, 1, 344
+};
+static int parser_action_row3815[] = {
+       1,
+       -1, 1, 264
+};
+static int parser_action_row3816[] = {
+       1,
+       -1, 1, 304
+};
+static int parser_action_row3817[] = {
+       1,
+       -1, 1, 224
+};
+static int parser_action_row3818[] = {
+       1,
+       -1, 1, 1249
+};
+static int parser_action_row3819[] = {
+       1,
+       -1, 1, 1277
+};
+static int parser_action_row3820[] = {
+       1,
+       -1, 1, 1253
+};
+static int parser_action_row3821[] = {
+       1,
+       -1, 1, 1281
+};
+static int parser_action_row3822[] = {
+       1,
+       -1, 1, 1252
+};
+static int parser_action_row3823[] = {
+       1,
+       -1, 1, 1280
+};
+static int parser_action_row3824[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3825[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3826[] = {
+       1,
+       -1, 1, 1255
+};
+static int parser_action_row3827[] = {
+       1,
+       -1, 1, 1283
+};
+static int parser_action_row3828[] = {
+       1,
+       -1, 1, 1245
+};
+static int parser_action_row3829[] = {
+       1,
+       -1, 1, 1273
+};
+static int parser_action_row3830[] = {
+       1,
+       -1, 1, 1258
+};
+static int parser_action_row3831[] = {
+       1,
+       -1, 1, 1286
+};
+static int parser_action_row3832[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3833[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3834[] = {
+       1,
+       -1, 1, 1262
+};
+static int parser_action_row3835[] = {
+       1,
+       -1, 1, 1290
+};
+static int parser_action_row3836[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3837[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3838[] = {
+       27,
+       -1, 1, 1049,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       42, 1, 944,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       102, 1, 944,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3839[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3840[] = {
+       13,
+       -1, 1, 1387,
+       62, 0, 3901,
+       63, 0, 284,
+       64, 0, 285,
+       65, 0, 286,
+       66, 0, 287,
+       67, 0, 288,
+       68, 0, 289,
+       69, 0, 290,
+       70, 0, 291,
+       71, 0, 292,
+       72, 0, 293,
+       73, 0, 294
+};
+static int parser_action_row3841[] = {
+       1,
+       -1, 1, 839
+};
+static int parser_action_row3842[] = {
+       1,
+       -1, 1, 841
+};
+static int parser_action_row3843[] = {
+       1,
+       -1, 1, 840
+};
+static int parser_action_row3844[] = {
+       1,
+       -1, 1, 842
+};
+static int parser_action_row3845[] = {
+       5,
+       -1, 3, 3844,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3846[] = {
+       5,
+       -1, 3, 3845,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3847[] = {
+       5,
+       -1, 3, 3846,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3848[] = {
+       5,
+       -1, 3, 3847,
+       0, 0, 100,
+       1, 0, 101,
+       98, 0, 270,
+       99, 0, 102
+};
+static int parser_action_row3849[] = {
+       1,
+       -1, 1, 890
+};
+static int parser_action_row3850[] = {
+       4,
+       -1, 3, 3849,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3851[] = {
+       1,
+       -1, 1, 876
+};
+static int parser_action_row3852[] = {
+       4,
+       -1, 3, 3851,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3853[] = {
+       1,
+       -1, 1, 878
+};
+static int parser_action_row3854[] = {
+       4,
+       -1, 3, 3853,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3855[] = {
+       1,
+       -1, 1, 877
+};
+static int parser_action_row3856[] = {
+       4,
+       -1, 3, 3855,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3857[] = {
+       1,
+       -1, 1, 879
+};
+static int parser_action_row3858[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3859[] = {
+       1,
+       -1, 1, 459
+};
+static int parser_action_row3860[] = {
+       1,
+       -1, 1, 457
+};
+static int parser_action_row3861[] = {
+       1,
+       -1, 1, 1191
+};
+static int parser_action_row3862[] = {
+       2,
+       -1, 3, 3861,
+       25, 0, 3916
+};
+static int parser_action_row3863[] = {
+       1,
+       -1, 1, 1169
+};
+static int parser_action_row3864[] = {
+       1,
+       -1, 1, 1173
 };
-static int parser_action_row1874[] = {
+static int parser_action_row3865[] = {
        2,
-       -1, 1, 65,
-       10, 0, 1904
+       -1, 1, 1172,
+       55, 0, 370
 };
-static int parser_action_row1875[] = {
-       1,
-       -1, 1, 58
+static int parser_action_row3866[] = {
+       3,
+       -1, 1, 1119,
+       76, 1, 1147,
+       97, 1, 1147
 };
-static int parser_action_row1876[] = {
+static int parser_action_row3867[] = {
+       3,
+       -1, 1, 1114,
+       76, 1, 1142,
+       97, 1, 1142
+};
+static int parser_action_row3868[] = {
+       3,
+       -1, 1, 1126,
+       76, 1, 1154,
+       97, 1, 1154
+};
+static int parser_action_row3869[] = {
+       4,
+       -1, 1, 1123,
+       55, 0, 370,
+       76, 1, 1151,
+       97, 1, 1151
+};
+static int parser_action_row3870[] = {
        1,
-       -1, 1, 57
+       -1, 1, 1177
 };
-static int parser_action_row1877[] = {
-       2,
-       -1, 1, 479,
-       10, 0, 1350
+static int parser_action_row3871[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
-static int parser_action_row1878[] = {
+static int parser_action_row3872[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row3873[] = {
        1,
-       -1, 1, 76
+       -1, 1, 1148
 };
-static int parser_action_row1879[] = {
+static int parser_action_row3874[] = {
        1,
-       -1, 1, 678
+       -1, 1, 136
 };
-static int parser_action_row1880[] = {
+static int parser_action_row3875[] = {
        1,
-       -1, 1, 697
+       -1, 1, 346
 };
-static int parser_action_row1881[] = {
+static int parser_action_row3876[] = {
        1,
-       -1, 1, 676
+       -1, 1, 266
 };
-static int parser_action_row1882[] = {
+static int parser_action_row3877[] = {
        1,
-       -1, 1, 695
+       -1, 1, 306
 };
-static int parser_action_row1883[] = {
+static int parser_action_row3878[] = {
        1,
-       -1, 1, 681
+       -1, 1, 226
 };
-static int parser_action_row1884[] = {
+static int parser_action_row3879[] = {
        1,
-       -1, 1, 700
+       -1, 1, 138
 };
-static int parser_action_row1885[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3880[] = {
+       1,
+       -1, 1, 348
 };
-static int parser_action_row1886[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3881[] = {
+       1,
+       -1, 1, 268
 };
-static int parser_action_row1887[] = {
+static int parser_action_row3882[] = {
        1,
-       -1, 1, 685
+       -1, 1, 308
 };
-static int parser_action_row1888[] = {
+static int parser_action_row3883[] = {
        1,
-       -1, 1, 704
+       -1, 1, 228
 };
-static int parser_action_row1889[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3884[] = {
+       1,
+       -1, 1, 137
 };
-static int parser_action_row1890[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3885[] = {
+       1,
+       -1, 1, 347
 };
-static int parser_action_row1891[] = {
-       25,
-       -1, 1, 528,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       42, 1, 468,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       101, 1, 468,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3886[] = {
+       1,
+       -1, 1, 267
 };
-static int parser_action_row1892[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3887[] = {
+       1,
+       -1, 1, 307
 };
-static int parser_action_row1893[] = {
-       13,
-       -1, 1, 767,
-       62, 0, 1912,
-       63, 0, 218,
-       64, 0, 219,
-       65, 0, 220,
-       66, 0, 221,
-       67, 0, 222,
-       68, 0, 223,
-       69, 0, 224,
-       70, 0, 225,
-       71, 0, 226,
-       72, 0, 227,
-       73, 0, 228
+static int parser_action_row3888[] = {
+       1,
+       -1, 1, 227
 };
-static int parser_action_row1894[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row3889[] = {
+       1,
+       -1, 1, 139
 };
-static int parser_action_row1895[] = {
+static int parser_action_row3890[] = {
        1,
-       -1, 1, 614
+       -1, 1, 349
 };
-static int parser_action_row1896[] = {
-       2,
-       -1, 3, 1895,
-       46, 0, 1915
+static int parser_action_row3891[] = {
+       1,
+       -1, 1, 269
 };
-static int parser_action_row1897[] = {
-       2,
-       -1, 3, 1896,
-       56, 0, 1916
+static int parser_action_row3892[] = {
+       1,
+       -1, 1, 309
 };
-static int parser_action_row1898[] = {
-       5,
-       -1, 3, 1897,
-       0, 0, 88,
-       1, 0, 89,
-       97, 0, 204,
-       98, 0, 90
+static int parser_action_row3893[] = {
+       1,
+       -1, 1, 229
 };
-static int parser_action_row1899[] = {
-       2,
-       -1, 3, 1898,
-       48, 0, 1919
+static int parser_action_row3894[] = {
+       1,
+       -1, 1, 1251
 };
-static int parser_action_row1900[] = {
-       2,
-       -1, 3, 1899,
-       56, 0, 1920
+static int parser_action_row3895[] = {
+       1,
+       -1, 1, 1279
 };
-static int parser_action_row1901[] = {
-       2,
-       -1, 3, 1900,
-       56, 0, 1921
+static int parser_action_row3896[] = {
+       1,
+       -1, 1, 1257
 };
-static int parser_action_row1902[] = {
+static int parser_action_row3897[] = {
        1,
-       -1, 1, 50
+       -1, 1, 1285
 };
-static int parser_action_row1903[] = {
+static int parser_action_row3898[] = {
        1,
-       -1, 1, 71
+       -1, 1, 1261
 };
-static int parser_action_row1904[] = {
+static int parser_action_row3899[] = {
        1,
-       -1, 1, 63
+       -1, 1, 1289
 };
-static int parser_action_row1905[] = {
+static int parser_action_row3900[] = {
        1,
-       -1, 1, 67
+       -1, 1, 1260
 };
-static int parser_action_row1906[] = {
+static int parser_action_row3901[] = {
        1,
-       -1, 1, 59
+       -1, 1, 1288
 };
-static int parser_action_row1907[] = {
+static int parser_action_row3902[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3903[] = {
+       25,
+       -1, 1, 944,
+       11, 0, 218,
+       13, 0, 235,
+       23, 0, 236,
+       32, 0, 237,
+       39, 0, 238,
+       41, 0, 239,
+       43, 0, 58,
+       44, 0, 59,
+       45, 0, 60,
+       46, 0, 61,
+       49, 0, 240,
+       55, 0, 65,
+       57, 0, 66,
+       77, 0, 241,
+       78, 0, 242,
+       85, 0, 243,
+       86, 0, 244,
+       100, 0, 67,
+       101, 0, 245,
+       103, 0, 69,
+       104, 0, 70,
+       105, 0, 71,
+       106, 0, 72,
+       109, 0, 73
+};
+static int parser_action_row3904[] = {
+       4,
+       -1, 3, 3903,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3905[] = {
        1,
-       -1, 1, 680
+       -1, 1, 881
 };
-static int parser_action_row1908[] = {
+static int parser_action_row3906[] = {
+       4,
+       -1, 3, 3905,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3907[] = {
        1,
-       -1, 1, 699
+       -1, 1, 883
 };
-static int parser_action_row1909[] = {
+static int parser_action_row3908[] = {
+       4,
+       -1, 3, 3907,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3909[] = {
        1,
-       -1, 1, 684
+       -1, 1, 882
 };
-static int parser_action_row1910[] = {
+static int parser_action_row3910[] = {
+       4,
+       -1, 3, 3909,
+       0, 0, 100,
+       1, 0, 101,
+       99, 0, 102
+};
+static int parser_action_row3911[] = {
        1,
-       -1, 1, 703
+       -1, 1, 884
 };
-static int parser_action_row1911[] = {
+static int parser_action_row3912[] = {
        1,
-       -1, 1, 683
+       -1, 1, 886
 };
-static int parser_action_row1912[] = {
+static int parser_action_row3913[] = {
        1,
-       -1, 1, 702
+       -1, 1, 888
 };
-static int parser_action_row1913[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3914[] = {
+       1,
+       -1, 1, 887
 };
-static int parser_action_row1914[] = {
-       23,
-       -1, 1, 468,
-       13, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       39, 0, 173,
-       41, 0, 174,
-       43, 0, 45,
-       44, 0, 46,
-       45, 0, 47,
-       46, 0, 48,
-       49, 0, 175,
-       55, 0, 52,
-       57, 0, 53,
-       77, 0, 176,
-       78, 0, 177,
-       86, 0, 178,
-       99, 0, 54,
-       100, 0, 179,
-       102, 0, 56,
-       103, 0, 57,
-       104, 0, 58,
-       105, 0, 59,
-       108, 0, 60
+static int parser_action_row3915[] = {
+       1,
+       -1, 1, 889
 };
-static int parser_action_row1915[] = {
-       22,
-       -1, 1, 468,
-       13, 0, 1133,
-       23, 0, 1134,
-       32, 0, 1135,
-       39, 0, 1136,
-       41, 0, 1137,
-       43, 0, 1138,
-       44, 0, 1139,
-       45, 0, 1140,
-       46, 0, 1141,
-       49, 0, 1142,
-       55, 0, 52,
-       77, 0, 1143,
-       78, 0, 1144,
-       86, 0, 1145,
-       99, 0, 54,
-       100, 0, 1146,
-       102, 0, 1147,
-       103, 0, 1148,
-       104, 0, 1149,
-       105, 0, 59,
-       108, 0, 1150
+static int parser_action_row3916[] = {
+       2,
+       -1, 3, 3915,
+       56, 0, 3927
 };
-static int parser_action_row1916[] = {
+static int parser_action_row3917[] = {
        3,
-       -1, 1, 497,
+       -1, 1, 973,
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1917[] = {
+static int parser_action_row3918[] = {
        1,
-       -1, 1, 618
+       -1, 1, 1171
 };
-static int parser_action_row1918[] = {
-       4,
-       -1, 3, 1917,
-       0, 0, 88,
-       1, 0, 89,
-       98, 0, 90
+static int parser_action_row3919[] = {
+       3,
+       -1, 1, 1120,
+       76, 1, 1148,
+       97, 1, 1148
 };
-static int parser_action_row1919[] = {
-       1,
-       -1, 1, 427
+static int parser_action_row3920[] = {
+       2,
+       -1, 3, 3919,
+       46, 0, 3929
 };
-static int parser_action_row1920[] = {
-       3,
-       -1, 1, 497,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row3921[] = {
+       2,
+       -1, 3, 3920,
+       56, 0, 3930
 };
-static int parser_action_row1921[] = {
+static int parser_action_row3922[] = {
        1,
-       -1, 1, 137
+       -1, 1, 1259
 };
-static int parser_action_row1922[] = {
+static int parser_action_row3923[] = {
        1,
-       -1, 1, 135
+       -1, 1, 1287
 };
-static int parser_action_row1923[] = {
+static int parser_action_row3924[] = {
        1,
-       -1, 1, 682
+       -1, 1, 891
 };
-static int parser_action_row1924[] = {
+static int parser_action_row3925[] = {
        1,
-       -1, 1, 701
+       -1, 1, 893
 };
-static int parser_action_row1925[] = {
+static int parser_action_row3926[] = {
        1,
-       -1, 1, 540
+       -1, 1, 892
 };
-static int parser_action_row1926[] = {
-       2,
-       -1, 3, 1925,
-       56, 0, 1928
+static int parser_action_row3927[] = {
+       1,
+       -1, 1, 894
 };
-static int parser_action_row1927[] = {
+static int parser_action_row3928[] = {
        1,
-       -1, 1, 428
+       -1, 1, 461
 };
-static int parser_action_row1928[] = {
-       2,
-       -1, 3, 1927,
-       56, 0, 1929
+static int parser_action_row3929[] = {
+       24,
+       -1, 1, 944,
+       11, 0, 1822,
+       13, 0, 1823,
+       23, 0, 1824,
+       32, 0, 1825,
+       39, 0, 1826,
+       41, 0, 1827,
+       43, 0, 1828,
+       44, 0, 1829,
+       45, 0, 1830,
+       46, 0, 1831,
+       49, 0, 1832,
+       55, 0, 65,
+       77, 0, 1833,
+       78, 0, 1834,
+       85, 0, 1835,
+       86, 0, 1836,
+       100, 0, 67,
+       101, 0, 1837,
+       103, 0, 1838,
+       104, 0, 1839,
+       105, 0, 1840,
+       106, 0, 72,
+       109, 0, 1841
+};
+static int parser_action_row3930[] = {
+       3,
+       -1, 1, 973,
+       0, 0, 1,
+       1, 0, 2
 };
-static int parser_action_row1929[] = {
+static int parser_action_row3931[] = {
        1,
-       -1, 1, 619
+       -1, 1, 1175
 };
-static int parser_action_row1930[] = {
+static int parser_action_row3932[] = {
        1,
-       -1, 1, 139
+       -1, 1, 1061
+};
+static int parser_action_row3933[] = {
+       2,
+       -1, 3, 3932,
+       56, 0, 3933
+};
+static int parser_action_row3934[] = {
+       1,
+       -1, 1, 1176
 };
 
 const int* const parser_action_table[] = {
@@ -23496,7 +44971,2011 @@ const int* const parser_action_table[] = {
        parser_action_row1927,
        parser_action_row1928,
        parser_action_row1929,
-       parser_action_row1930
+       parser_action_row1930,
+       parser_action_row1931,
+       parser_action_row1932,
+       parser_action_row1933,
+       parser_action_row1934,
+       parser_action_row1935,
+       parser_action_row1936,
+       parser_action_row1937,
+       parser_action_row1938,
+       parser_action_row1939,
+       parser_action_row1940,
+       parser_action_row1941,
+       parser_action_row1942,
+       parser_action_row1943,
+       parser_action_row1944,
+       parser_action_row1945,
+       parser_action_row1946,
+       parser_action_row1947,
+       parser_action_row1948,
+       parser_action_row1949,
+       parser_action_row1950,
+       parser_action_row1951,
+       parser_action_row1952,
+       parser_action_row1953,
+       parser_action_row1954,
+       parser_action_row1955,
+       parser_action_row1956,
+       parser_action_row1957,
+       parser_action_row1958,
+       parser_action_row1959,
+       parser_action_row1960,
+       parser_action_row1961,
+       parser_action_row1962,
+       parser_action_row1963,
+       parser_action_row1964,
+       parser_action_row1965,
+       parser_action_row1966,
+       parser_action_row1967,
+       parser_action_row1968,
+       parser_action_row1969,
+       parser_action_row1970,
+       parser_action_row1971,
+       parser_action_row1972,
+       parser_action_row1973,
+       parser_action_row1974,
+       parser_action_row1975,
+       parser_action_row1976,
+       parser_action_row1977,
+       parser_action_row1978,
+       parser_action_row1979,
+       parser_action_row1980,
+       parser_action_row1981,
+       parser_action_row1982,
+       parser_action_row1983,
+       parser_action_row1984,
+       parser_action_row1985,
+       parser_action_row1986,
+       parser_action_row1987,
+       parser_action_row1988,
+       parser_action_row1989,
+       parser_action_row1990,
+       parser_action_row1991,
+       parser_action_row1992,
+       parser_action_row1993,
+       parser_action_row1994,
+       parser_action_row1995,
+       parser_action_row1996,
+       parser_action_row1997,
+       parser_action_row1998,
+       parser_action_row1999,
+       parser_action_row2000,
+       parser_action_row2001,
+       parser_action_row2002,
+       parser_action_row2003,
+       parser_action_row2004,
+       parser_action_row2005,
+       parser_action_row2006,
+       parser_action_row2007,
+       parser_action_row2008,
+       parser_action_row2009,
+       parser_action_row2010,
+       parser_action_row2011,
+       parser_action_row2012,
+       parser_action_row2013,
+       parser_action_row2014,
+       parser_action_row2015,
+       parser_action_row2016,
+       parser_action_row2017,
+       parser_action_row2018,
+       parser_action_row2019,
+       parser_action_row2020,
+       parser_action_row2021,
+       parser_action_row2022,
+       parser_action_row2023,
+       parser_action_row2024,
+       parser_action_row2025,
+       parser_action_row2026,
+       parser_action_row2027,
+       parser_action_row2028,
+       parser_action_row2029,
+       parser_action_row2030,
+       parser_action_row2031,
+       parser_action_row2032,
+       parser_action_row2033,
+       parser_action_row2034,
+       parser_action_row2035,
+       parser_action_row2036,
+       parser_action_row2037,
+       parser_action_row2038,
+       parser_action_row2039,
+       parser_action_row2040,
+       parser_action_row2041,
+       parser_action_row2042,
+       parser_action_row2043,
+       parser_action_row2044,
+       parser_action_row2045,
+       parser_action_row2046,
+       parser_action_row2047,
+       parser_action_row2048,
+       parser_action_row2049,
+       parser_action_row2050,
+       parser_action_row2051,
+       parser_action_row2052,
+       parser_action_row2053,
+       parser_action_row2054,
+       parser_action_row2055,
+       parser_action_row2056,
+       parser_action_row2057,
+       parser_action_row2058,
+       parser_action_row2059,
+       parser_action_row2060,
+       parser_action_row2061,
+       parser_action_row2062,
+       parser_action_row2063,
+       parser_action_row2064,
+       parser_action_row2065,
+       parser_action_row2066,
+       parser_action_row2067,
+       parser_action_row2068,
+       parser_action_row2069,
+       parser_action_row2070,
+       parser_action_row2071,
+       parser_action_row2072,
+       parser_action_row2073,
+       parser_action_row2074,
+       parser_action_row2075,
+       parser_action_row2076,
+       parser_action_row2077,
+       parser_action_row2078,
+       parser_action_row2079,
+       parser_action_row2080,
+       parser_action_row2081,
+       parser_action_row2082,
+       parser_action_row2083,
+       parser_action_row2084,
+       parser_action_row2085,
+       parser_action_row2086,
+       parser_action_row2087,
+       parser_action_row2088,
+       parser_action_row2089,
+       parser_action_row2090,
+       parser_action_row2091,
+       parser_action_row2092,
+       parser_action_row2093,
+       parser_action_row2094,
+       parser_action_row2095,
+       parser_action_row2096,
+       parser_action_row2097,
+       parser_action_row2098,
+       parser_action_row2099,
+       parser_action_row2100,
+       parser_action_row2101,
+       parser_action_row2102,
+       parser_action_row2103,
+       parser_action_row2104,
+       parser_action_row2105,
+       parser_action_row2106,
+       parser_action_row2107,
+       parser_action_row2108,
+       parser_action_row2109,
+       parser_action_row2110,
+       parser_action_row2111,
+       parser_action_row2112,
+       parser_action_row2113,
+       parser_action_row2114,
+       parser_action_row2115,
+       parser_action_row2116,
+       parser_action_row2117,
+       parser_action_row2118,
+       parser_action_row2119,
+       parser_action_row2120,
+       parser_action_row2121,
+       parser_action_row2122,
+       parser_action_row2123,
+       parser_action_row2124,
+       parser_action_row2125,
+       parser_action_row2126,
+       parser_action_row2127,
+       parser_action_row2128,
+       parser_action_row2129,
+       parser_action_row2130,
+       parser_action_row2131,
+       parser_action_row2132,
+       parser_action_row2133,
+       parser_action_row2134,
+       parser_action_row2135,
+       parser_action_row2136,
+       parser_action_row2137,
+       parser_action_row2138,
+       parser_action_row2139,
+       parser_action_row2140,
+       parser_action_row2141,
+       parser_action_row2142,
+       parser_action_row2143,
+       parser_action_row2144,
+       parser_action_row2145,
+       parser_action_row2146,
+       parser_action_row2147,
+       parser_action_row2148,
+       parser_action_row2149,
+       parser_action_row2150,
+       parser_action_row2151,
+       parser_action_row2152,
+       parser_action_row2153,
+       parser_action_row2154,
+       parser_action_row2155,
+       parser_action_row2156,
+       parser_action_row2157,
+       parser_action_row2158,
+       parser_action_row2159,
+       parser_action_row2160,
+       parser_action_row2161,
+       parser_action_row2162,
+       parser_action_row2163,
+       parser_action_row2164,
+       parser_action_row2165,
+       parser_action_row2166,
+       parser_action_row2167,
+       parser_action_row2168,
+       parser_action_row2169,
+       parser_action_row2170,
+       parser_action_row2171,
+       parser_action_row2172,
+       parser_action_row2173,
+       parser_action_row2174,
+       parser_action_row2175,
+       parser_action_row2176,
+       parser_action_row2177,
+       parser_action_row2178,
+       parser_action_row2179,
+       parser_action_row2180,
+       parser_action_row2181,
+       parser_action_row2182,
+       parser_action_row2183,
+       parser_action_row2184,
+       parser_action_row2185,
+       parser_action_row2186,
+       parser_action_row2187,
+       parser_action_row2188,
+       parser_action_row2189,
+       parser_action_row2190,
+       parser_action_row2191,
+       parser_action_row2192,
+       parser_action_row2193,
+       parser_action_row2194,
+       parser_action_row2195,
+       parser_action_row2196,
+       parser_action_row2197,
+       parser_action_row2198,
+       parser_action_row2199,
+       parser_action_row2200,
+       parser_action_row2201,
+       parser_action_row2202,
+       parser_action_row2203,
+       parser_action_row2204,
+       parser_action_row2205,
+       parser_action_row2206,
+       parser_action_row2207,
+       parser_action_row2208,
+       parser_action_row2209,
+       parser_action_row2210,
+       parser_action_row2211,
+       parser_action_row2212,
+       parser_action_row2213,
+       parser_action_row2214,
+       parser_action_row2215,
+       parser_action_row2216,
+       parser_action_row2217,
+       parser_action_row2218,
+       parser_action_row2219,
+       parser_action_row2220,
+       parser_action_row2221,
+       parser_action_row2222,
+       parser_action_row2223,
+       parser_action_row2224,
+       parser_action_row2225,
+       parser_action_row2226,
+       parser_action_row2227,
+       parser_action_row2228,
+       parser_action_row2229,
+       parser_action_row2230,
+       parser_action_row2231,
+       parser_action_row2232,
+       parser_action_row2233,
+       parser_action_row2234,
+       parser_action_row2235,
+       parser_action_row2236,
+       parser_action_row2237,
+       parser_action_row2238,
+       parser_action_row2239,
+       parser_action_row2240,
+       parser_action_row2241,
+       parser_action_row2242,
+       parser_action_row2243,
+       parser_action_row2244,
+       parser_action_row2245,
+       parser_action_row2246,
+       parser_action_row2247,
+       parser_action_row2248,
+       parser_action_row2249,
+       parser_action_row2250,
+       parser_action_row2251,
+       parser_action_row2252,
+       parser_action_row2253,
+       parser_action_row2254,
+       parser_action_row2255,
+       parser_action_row2256,
+       parser_action_row2257,
+       parser_action_row2258,
+       parser_action_row2259,
+       parser_action_row2260,
+       parser_action_row2261,
+       parser_action_row2262,
+       parser_action_row2263,
+       parser_action_row2264,
+       parser_action_row2265,
+       parser_action_row2266,
+       parser_action_row2267,
+       parser_action_row2268,
+       parser_action_row2269,
+       parser_action_row2270,
+       parser_action_row2271,
+       parser_action_row2272,
+       parser_action_row2273,
+       parser_action_row2274,
+       parser_action_row2275,
+       parser_action_row2276,
+       parser_action_row2277,
+       parser_action_row2278,
+       parser_action_row2279,
+       parser_action_row2280,
+       parser_action_row2281,
+       parser_action_row2282,
+       parser_action_row2283,
+       parser_action_row2284,
+       parser_action_row2285,
+       parser_action_row2286,
+       parser_action_row2287,
+       parser_action_row2288,
+       parser_action_row2289,
+       parser_action_row2290,
+       parser_action_row2291,
+       parser_action_row2292,
+       parser_action_row2293,
+       parser_action_row2294,
+       parser_action_row2295,
+       parser_action_row2296,
+       parser_action_row2297,
+       parser_action_row2298,
+       parser_action_row2299,
+       parser_action_row2300,
+       parser_action_row2301,
+       parser_action_row2302,
+       parser_action_row2303,
+       parser_action_row2304,
+       parser_action_row2305,
+       parser_action_row2306,
+       parser_action_row2307,
+       parser_action_row2308,
+       parser_action_row2309,
+       parser_action_row2310,
+       parser_action_row2311,
+       parser_action_row2312,
+       parser_action_row2313,
+       parser_action_row2314,
+       parser_action_row2315,
+       parser_action_row2316,
+       parser_action_row2317,
+       parser_action_row2318,
+       parser_action_row2319,
+       parser_action_row2320,
+       parser_action_row2321,
+       parser_action_row2322,
+       parser_action_row2323,
+       parser_action_row2324,
+       parser_action_row2325,
+       parser_action_row2326,
+       parser_action_row2327,
+       parser_action_row2328,
+       parser_action_row2329,
+       parser_action_row2330,
+       parser_action_row2331,
+       parser_action_row2332,
+       parser_action_row2333,
+       parser_action_row2334,
+       parser_action_row2335,
+       parser_action_row2336,
+       parser_action_row2337,
+       parser_action_row2338,
+       parser_action_row2339,
+       parser_action_row2340,
+       parser_action_row2341,
+       parser_action_row2342,
+       parser_action_row2343,
+       parser_action_row2344,
+       parser_action_row2345,
+       parser_action_row2346,
+       parser_action_row2347,
+       parser_action_row2348,
+       parser_action_row2349,
+       parser_action_row2350,
+       parser_action_row2351,
+       parser_action_row2352,
+       parser_action_row2353,
+       parser_action_row2354,
+       parser_action_row2355,
+       parser_action_row2356,
+       parser_action_row2357,
+       parser_action_row2358,
+       parser_action_row2359,
+       parser_action_row2360,
+       parser_action_row2361,
+       parser_action_row2362,
+       parser_action_row2363,
+       parser_action_row2364,
+       parser_action_row2365,
+       parser_action_row2366,
+       parser_action_row2367,
+       parser_action_row2368,
+       parser_action_row2369,
+       parser_action_row2370,
+       parser_action_row2371,
+       parser_action_row2372,
+       parser_action_row2373,
+       parser_action_row2374,
+       parser_action_row2375,
+       parser_action_row2376,
+       parser_action_row2377,
+       parser_action_row2378,
+       parser_action_row2379,
+       parser_action_row2380,
+       parser_action_row2381,
+       parser_action_row2382,
+       parser_action_row2383,
+       parser_action_row2384,
+       parser_action_row2385,
+       parser_action_row2386,
+       parser_action_row2387,
+       parser_action_row2388,
+       parser_action_row2389,
+       parser_action_row2390,
+       parser_action_row2391,
+       parser_action_row2392,
+       parser_action_row2393,
+       parser_action_row2394,
+       parser_action_row2395,
+       parser_action_row2396,
+       parser_action_row2397,
+       parser_action_row2398,
+       parser_action_row2399,
+       parser_action_row2400,
+       parser_action_row2401,
+       parser_action_row2402,
+       parser_action_row2403,
+       parser_action_row2404,
+       parser_action_row2405,
+       parser_action_row2406,
+       parser_action_row2407,
+       parser_action_row2408,
+       parser_action_row2409,
+       parser_action_row2410,
+       parser_action_row2411,
+       parser_action_row2412,
+       parser_action_row2413,
+       parser_action_row2414,
+       parser_action_row2415,
+       parser_action_row2416,
+       parser_action_row2417,
+       parser_action_row2418,
+       parser_action_row2419,
+       parser_action_row2420,
+       parser_action_row2421,
+       parser_action_row2422,
+       parser_action_row2423,
+       parser_action_row2424,
+       parser_action_row2425,
+       parser_action_row2426,
+       parser_action_row2427,
+       parser_action_row2428,
+       parser_action_row2429,
+       parser_action_row2430,
+       parser_action_row2431,
+       parser_action_row2432,
+       parser_action_row2433,
+       parser_action_row2434,
+       parser_action_row2435,
+       parser_action_row2436,
+       parser_action_row2437,
+       parser_action_row2438,
+       parser_action_row2439,
+       parser_action_row2440,
+       parser_action_row2441,
+       parser_action_row2442,
+       parser_action_row2443,
+       parser_action_row2444,
+       parser_action_row2445,
+       parser_action_row2446,
+       parser_action_row2447,
+       parser_action_row2448,
+       parser_action_row2449,
+       parser_action_row2450,
+       parser_action_row2451,
+       parser_action_row2452,
+       parser_action_row2453,
+       parser_action_row2454,
+       parser_action_row2455,
+       parser_action_row2456,
+       parser_action_row2457,
+       parser_action_row2458,
+       parser_action_row2459,
+       parser_action_row2460,
+       parser_action_row2461,
+       parser_action_row2462,
+       parser_action_row2463,
+       parser_action_row2464,
+       parser_action_row2465,
+       parser_action_row2466,
+       parser_action_row2467,
+       parser_action_row2468,
+       parser_action_row2469,
+       parser_action_row2470,
+       parser_action_row2471,
+       parser_action_row2472,
+       parser_action_row2473,
+       parser_action_row2474,
+       parser_action_row2475,
+       parser_action_row2476,
+       parser_action_row2477,
+       parser_action_row2478,
+       parser_action_row2479,
+       parser_action_row2480,
+       parser_action_row2481,
+       parser_action_row2482,
+       parser_action_row2483,
+       parser_action_row2484,
+       parser_action_row2485,
+       parser_action_row2486,
+       parser_action_row2487,
+       parser_action_row2488,
+       parser_action_row2489,
+       parser_action_row2490,
+       parser_action_row2491,
+       parser_action_row2492,
+       parser_action_row2493,
+       parser_action_row2494,
+       parser_action_row2495,
+       parser_action_row2496,
+       parser_action_row2497,
+       parser_action_row2498,
+       parser_action_row2499,
+       parser_action_row2500,
+       parser_action_row2501,
+       parser_action_row2502,
+       parser_action_row2503,
+       parser_action_row2504,
+       parser_action_row2505,
+       parser_action_row2506,
+       parser_action_row2507,
+       parser_action_row2508,
+       parser_action_row2509,
+       parser_action_row2510,
+       parser_action_row2511,
+       parser_action_row2512,
+       parser_action_row2513,
+       parser_action_row2514,
+       parser_action_row2515,
+       parser_action_row2516,
+       parser_action_row2517,
+       parser_action_row2518,
+       parser_action_row2519,
+       parser_action_row2520,
+       parser_action_row2521,
+       parser_action_row2522,
+       parser_action_row2523,
+       parser_action_row2524,
+       parser_action_row2525,
+       parser_action_row2526,
+       parser_action_row2527,
+       parser_action_row2528,
+       parser_action_row2529,
+       parser_action_row2530,
+       parser_action_row2531,
+       parser_action_row2532,
+       parser_action_row2533,
+       parser_action_row2534,
+       parser_action_row2535,
+       parser_action_row2536,
+       parser_action_row2537,
+       parser_action_row2538,
+       parser_action_row2539,
+       parser_action_row2540,
+       parser_action_row2541,
+       parser_action_row2542,
+       parser_action_row2543,
+       parser_action_row2544,
+       parser_action_row2545,
+       parser_action_row2546,
+       parser_action_row2547,
+       parser_action_row2548,
+       parser_action_row2549,
+       parser_action_row2550,
+       parser_action_row2551,
+       parser_action_row2552,
+       parser_action_row2553,
+       parser_action_row2554,
+       parser_action_row2555,
+       parser_action_row2556,
+       parser_action_row2557,
+       parser_action_row2558,
+       parser_action_row2559,
+       parser_action_row2560,
+       parser_action_row2561,
+       parser_action_row2562,
+       parser_action_row2563,
+       parser_action_row2564,
+       parser_action_row2565,
+       parser_action_row2566,
+       parser_action_row2567,
+       parser_action_row2568,
+       parser_action_row2569,
+       parser_action_row2570,
+       parser_action_row2571,
+       parser_action_row2572,
+       parser_action_row2573,
+       parser_action_row2574,
+       parser_action_row2575,
+       parser_action_row2576,
+       parser_action_row2577,
+       parser_action_row2578,
+       parser_action_row2579,
+       parser_action_row2580,
+       parser_action_row2581,
+       parser_action_row2582,
+       parser_action_row2583,
+       parser_action_row2584,
+       parser_action_row2585,
+       parser_action_row2586,
+       parser_action_row2587,
+       parser_action_row2588,
+       parser_action_row2589,
+       parser_action_row2590,
+       parser_action_row2591,
+       parser_action_row2592,
+       parser_action_row2593,
+       parser_action_row2594,
+       parser_action_row2595,
+       parser_action_row2596,
+       parser_action_row2597,
+       parser_action_row2598,
+       parser_action_row2599,
+       parser_action_row2600,
+       parser_action_row2601,
+       parser_action_row2602,
+       parser_action_row2603,
+       parser_action_row2604,
+       parser_action_row2605,
+       parser_action_row2606,
+       parser_action_row2607,
+       parser_action_row2608,
+       parser_action_row2609,
+       parser_action_row2610,
+       parser_action_row2611,
+       parser_action_row2612,
+       parser_action_row2613,
+       parser_action_row2614,
+       parser_action_row2615,
+       parser_action_row2616,
+       parser_action_row2617,
+       parser_action_row2618,
+       parser_action_row2619,
+       parser_action_row2620,
+       parser_action_row2621,
+       parser_action_row2622,
+       parser_action_row2623,
+       parser_action_row2624,
+       parser_action_row2625,
+       parser_action_row2626,
+       parser_action_row2627,
+       parser_action_row2628,
+       parser_action_row2629,
+       parser_action_row2630,
+       parser_action_row2631,
+       parser_action_row2632,
+       parser_action_row2633,
+       parser_action_row2634,
+       parser_action_row2635,
+       parser_action_row2636,
+       parser_action_row2637,
+       parser_action_row2638,
+       parser_action_row2639,
+       parser_action_row2640,
+       parser_action_row2641,
+       parser_action_row2642,
+       parser_action_row2643,
+       parser_action_row2644,
+       parser_action_row2645,
+       parser_action_row2646,
+       parser_action_row2647,
+       parser_action_row2648,
+       parser_action_row2649,
+       parser_action_row2650,
+       parser_action_row2651,
+       parser_action_row2652,
+       parser_action_row2653,
+       parser_action_row2654,
+       parser_action_row2655,
+       parser_action_row2656,
+       parser_action_row2657,
+       parser_action_row2658,
+       parser_action_row2659,
+       parser_action_row2660,
+       parser_action_row2661,
+       parser_action_row2662,
+       parser_action_row2663,
+       parser_action_row2664,
+       parser_action_row2665,
+       parser_action_row2666,
+       parser_action_row2667,
+       parser_action_row2668,
+       parser_action_row2669,
+       parser_action_row2670,
+       parser_action_row2671,
+       parser_action_row2672,
+       parser_action_row2673,
+       parser_action_row2674,
+       parser_action_row2675,
+       parser_action_row2676,
+       parser_action_row2677,
+       parser_action_row2678,
+       parser_action_row2679,
+       parser_action_row2680,
+       parser_action_row2681,
+       parser_action_row2682,
+       parser_action_row2683,
+       parser_action_row2684,
+       parser_action_row2685,
+       parser_action_row2686,
+       parser_action_row2687,
+       parser_action_row2688,
+       parser_action_row2689,
+       parser_action_row2690,
+       parser_action_row2691,
+       parser_action_row2692,
+       parser_action_row2693,
+       parser_action_row2694,
+       parser_action_row2695,
+       parser_action_row2696,
+       parser_action_row2697,
+       parser_action_row2698,
+       parser_action_row2699,
+       parser_action_row2700,
+       parser_action_row2701,
+       parser_action_row2702,
+       parser_action_row2703,
+       parser_action_row2704,
+       parser_action_row2705,
+       parser_action_row2706,
+       parser_action_row2707,
+       parser_action_row2708,
+       parser_action_row2709,
+       parser_action_row2710,
+       parser_action_row2711,
+       parser_action_row2712,
+       parser_action_row2713,
+       parser_action_row2714,
+       parser_action_row2715,
+       parser_action_row2716,
+       parser_action_row2717,
+       parser_action_row2718,
+       parser_action_row2719,
+       parser_action_row2720,
+       parser_action_row2721,
+       parser_action_row2722,
+       parser_action_row2723,
+       parser_action_row2724,
+       parser_action_row2725,
+       parser_action_row2726,
+       parser_action_row2727,
+       parser_action_row2728,
+       parser_action_row2729,
+       parser_action_row2730,
+       parser_action_row2731,
+       parser_action_row2732,
+       parser_action_row2733,
+       parser_action_row2734,
+       parser_action_row2735,
+       parser_action_row2736,
+       parser_action_row2737,
+       parser_action_row2738,
+       parser_action_row2739,
+       parser_action_row2740,
+       parser_action_row2741,
+       parser_action_row2742,
+       parser_action_row2743,
+       parser_action_row2744,
+       parser_action_row2745,
+       parser_action_row2746,
+       parser_action_row2747,
+       parser_action_row2748,
+       parser_action_row2749,
+       parser_action_row2750,
+       parser_action_row2751,
+       parser_action_row2752,
+       parser_action_row2753,
+       parser_action_row2754,
+       parser_action_row2755,
+       parser_action_row2756,
+       parser_action_row2757,
+       parser_action_row2758,
+       parser_action_row2759,
+       parser_action_row2760,
+       parser_action_row2761,
+       parser_action_row2762,
+       parser_action_row2763,
+       parser_action_row2764,
+       parser_action_row2765,
+       parser_action_row2766,
+       parser_action_row2767,
+       parser_action_row2768,
+       parser_action_row2769,
+       parser_action_row2770,
+       parser_action_row2771,
+       parser_action_row2772,
+       parser_action_row2773,
+       parser_action_row2774,
+       parser_action_row2775,
+       parser_action_row2776,
+       parser_action_row2777,
+       parser_action_row2778,
+       parser_action_row2779,
+       parser_action_row2780,
+       parser_action_row2781,
+       parser_action_row2782,
+       parser_action_row2783,
+       parser_action_row2784,
+       parser_action_row2785,
+       parser_action_row2786,
+       parser_action_row2787,
+       parser_action_row2788,
+       parser_action_row2789,
+       parser_action_row2790,
+       parser_action_row2791,
+       parser_action_row2792,
+       parser_action_row2793,
+       parser_action_row2794,
+       parser_action_row2795,
+       parser_action_row2796,
+       parser_action_row2797,
+       parser_action_row2798,
+       parser_action_row2799,
+       parser_action_row2800,
+       parser_action_row2801,
+       parser_action_row2802,
+       parser_action_row2803,
+       parser_action_row2804,
+       parser_action_row2805,
+       parser_action_row2806,
+       parser_action_row2807,
+       parser_action_row2808,
+       parser_action_row2809,
+       parser_action_row2810,
+       parser_action_row2811,
+       parser_action_row2812,
+       parser_action_row2813,
+       parser_action_row2814,
+       parser_action_row2815,
+       parser_action_row2816,
+       parser_action_row2817,
+       parser_action_row2818,
+       parser_action_row2819,
+       parser_action_row2820,
+       parser_action_row2821,
+       parser_action_row2822,
+       parser_action_row2823,
+       parser_action_row2824,
+       parser_action_row2825,
+       parser_action_row2826,
+       parser_action_row2827,
+       parser_action_row2828,
+       parser_action_row2829,
+       parser_action_row2830,
+       parser_action_row2831,
+       parser_action_row2832,
+       parser_action_row2833,
+       parser_action_row2834,
+       parser_action_row2835,
+       parser_action_row2836,
+       parser_action_row2837,
+       parser_action_row2838,
+       parser_action_row2839,
+       parser_action_row2840,
+       parser_action_row2841,
+       parser_action_row2842,
+       parser_action_row2843,
+       parser_action_row2844,
+       parser_action_row2845,
+       parser_action_row2846,
+       parser_action_row2847,
+       parser_action_row2848,
+       parser_action_row2849,
+       parser_action_row2850,
+       parser_action_row2851,
+       parser_action_row2852,
+       parser_action_row2853,
+       parser_action_row2854,
+       parser_action_row2855,
+       parser_action_row2856,
+       parser_action_row2857,
+       parser_action_row2858,
+       parser_action_row2859,
+       parser_action_row2860,
+       parser_action_row2861,
+       parser_action_row2862,
+       parser_action_row2863,
+       parser_action_row2864,
+       parser_action_row2865,
+       parser_action_row2866,
+       parser_action_row2867,
+       parser_action_row2868,
+       parser_action_row2869,
+       parser_action_row2870,
+       parser_action_row2871,
+       parser_action_row2872,
+       parser_action_row2873,
+       parser_action_row2874,
+       parser_action_row2875,
+       parser_action_row2876,
+       parser_action_row2877,
+       parser_action_row2878,
+       parser_action_row2879,
+       parser_action_row2880,
+       parser_action_row2881,
+       parser_action_row2882,
+       parser_action_row2883,
+       parser_action_row2884,
+       parser_action_row2885,
+       parser_action_row2886,
+       parser_action_row2887,
+       parser_action_row2888,
+       parser_action_row2889,
+       parser_action_row2890,
+       parser_action_row2891,
+       parser_action_row2892,
+       parser_action_row2893,
+       parser_action_row2894,
+       parser_action_row2895,
+       parser_action_row2896,
+       parser_action_row2897,
+       parser_action_row2898,
+       parser_action_row2899,
+       parser_action_row2900,
+       parser_action_row2901,
+       parser_action_row2902,
+       parser_action_row2903,
+       parser_action_row2904,
+       parser_action_row2905,
+       parser_action_row2906,
+       parser_action_row2907,
+       parser_action_row2908,
+       parser_action_row2909,
+       parser_action_row2910,
+       parser_action_row2911,
+       parser_action_row2912,
+       parser_action_row2913,
+       parser_action_row2914,
+       parser_action_row2915,
+       parser_action_row2916,
+       parser_action_row2917,
+       parser_action_row2918,
+       parser_action_row2919,
+       parser_action_row2920,
+       parser_action_row2921,
+       parser_action_row2922,
+       parser_action_row2923,
+       parser_action_row2924,
+       parser_action_row2925,
+       parser_action_row2926,
+       parser_action_row2927,
+       parser_action_row2928,
+       parser_action_row2929,
+       parser_action_row2930,
+       parser_action_row2931,
+       parser_action_row2932,
+       parser_action_row2933,
+       parser_action_row2934,
+       parser_action_row2935,
+       parser_action_row2936,
+       parser_action_row2937,
+       parser_action_row2938,
+       parser_action_row2939,
+       parser_action_row2940,
+       parser_action_row2941,
+       parser_action_row2942,
+       parser_action_row2943,
+       parser_action_row2944,
+       parser_action_row2945,
+       parser_action_row2946,
+       parser_action_row2947,
+       parser_action_row2948,
+       parser_action_row2949,
+       parser_action_row2950,
+       parser_action_row2951,
+       parser_action_row2952,
+       parser_action_row2953,
+       parser_action_row2954,
+       parser_action_row2955,
+       parser_action_row2956,
+       parser_action_row2957,
+       parser_action_row2958,
+       parser_action_row2959,
+       parser_action_row2960,
+       parser_action_row2961,
+       parser_action_row2962,
+       parser_action_row2963,
+       parser_action_row2964,
+       parser_action_row2965,
+       parser_action_row2966,
+       parser_action_row2967,
+       parser_action_row2968,
+       parser_action_row2969,
+       parser_action_row2970,
+       parser_action_row2971,
+       parser_action_row2972,
+       parser_action_row2973,
+       parser_action_row2974,
+       parser_action_row2975,
+       parser_action_row2976,
+       parser_action_row2977,
+       parser_action_row2978,
+       parser_action_row2979,
+       parser_action_row2980,
+       parser_action_row2981,
+       parser_action_row2982,
+       parser_action_row2983,
+       parser_action_row2984,
+       parser_action_row2985,
+       parser_action_row2986,
+       parser_action_row2987,
+       parser_action_row2988,
+       parser_action_row2989,
+       parser_action_row2990,
+       parser_action_row2991,
+       parser_action_row2992,
+       parser_action_row2993,
+       parser_action_row2994,
+       parser_action_row2995,
+       parser_action_row2996,
+       parser_action_row2997,
+       parser_action_row2998,
+       parser_action_row2999,
+       parser_action_row3000,
+       parser_action_row3001,
+       parser_action_row3002,
+       parser_action_row3003,
+       parser_action_row3004,
+       parser_action_row3005,
+       parser_action_row3006,
+       parser_action_row3007,
+       parser_action_row3008,
+       parser_action_row3009,
+       parser_action_row3010,
+       parser_action_row3011,
+       parser_action_row3012,
+       parser_action_row3013,
+       parser_action_row3014,
+       parser_action_row3015,
+       parser_action_row3016,
+       parser_action_row3017,
+       parser_action_row3018,
+       parser_action_row3019,
+       parser_action_row3020,
+       parser_action_row3021,
+       parser_action_row3022,
+       parser_action_row3023,
+       parser_action_row3024,
+       parser_action_row3025,
+       parser_action_row3026,
+       parser_action_row3027,
+       parser_action_row3028,
+       parser_action_row3029,
+       parser_action_row3030,
+       parser_action_row3031,
+       parser_action_row3032,
+       parser_action_row3033,
+       parser_action_row3034,
+       parser_action_row3035,
+       parser_action_row3036,
+       parser_action_row3037,
+       parser_action_row3038,
+       parser_action_row3039,
+       parser_action_row3040,
+       parser_action_row3041,
+       parser_action_row3042,
+       parser_action_row3043,
+       parser_action_row3044,
+       parser_action_row3045,
+       parser_action_row3046,
+       parser_action_row3047,
+       parser_action_row3048,
+       parser_action_row3049,
+       parser_action_row3050,
+       parser_action_row3051,
+       parser_action_row3052,
+       parser_action_row3053,
+       parser_action_row3054,
+       parser_action_row3055,
+       parser_action_row3056,
+       parser_action_row3057,
+       parser_action_row3058,
+       parser_action_row3059,
+       parser_action_row3060,
+       parser_action_row3061,
+       parser_action_row3062,
+       parser_action_row3063,
+       parser_action_row3064,
+       parser_action_row3065,
+       parser_action_row3066,
+       parser_action_row3067,
+       parser_action_row3068,
+       parser_action_row3069,
+       parser_action_row3070,
+       parser_action_row3071,
+       parser_action_row3072,
+       parser_action_row3073,
+       parser_action_row3074,
+       parser_action_row3075,
+       parser_action_row3076,
+       parser_action_row3077,
+       parser_action_row3078,
+       parser_action_row3079,
+       parser_action_row3080,
+       parser_action_row3081,
+       parser_action_row3082,
+       parser_action_row3083,
+       parser_action_row3084,
+       parser_action_row3085,
+       parser_action_row3086,
+       parser_action_row3087,
+       parser_action_row3088,
+       parser_action_row3089,
+       parser_action_row3090,
+       parser_action_row3091,
+       parser_action_row3092,
+       parser_action_row3093,
+       parser_action_row3094,
+       parser_action_row3095,
+       parser_action_row3096,
+       parser_action_row3097,
+       parser_action_row3098,
+       parser_action_row3099,
+       parser_action_row3100,
+       parser_action_row3101,
+       parser_action_row3102,
+       parser_action_row3103,
+       parser_action_row3104,
+       parser_action_row3105,
+       parser_action_row3106,
+       parser_action_row3107,
+       parser_action_row3108,
+       parser_action_row3109,
+       parser_action_row3110,
+       parser_action_row3111,
+       parser_action_row3112,
+       parser_action_row3113,
+       parser_action_row3114,
+       parser_action_row3115,
+       parser_action_row3116,
+       parser_action_row3117,
+       parser_action_row3118,
+       parser_action_row3119,
+       parser_action_row3120,
+       parser_action_row3121,
+       parser_action_row3122,
+       parser_action_row3123,
+       parser_action_row3124,
+       parser_action_row3125,
+       parser_action_row3126,
+       parser_action_row3127,
+       parser_action_row3128,
+       parser_action_row3129,
+       parser_action_row3130,
+       parser_action_row3131,
+       parser_action_row3132,
+       parser_action_row3133,
+       parser_action_row3134,
+       parser_action_row3135,
+       parser_action_row3136,
+       parser_action_row3137,
+       parser_action_row3138,
+       parser_action_row3139,
+       parser_action_row3140,
+       parser_action_row3141,
+       parser_action_row3142,
+       parser_action_row3143,
+       parser_action_row3144,
+       parser_action_row3145,
+       parser_action_row3146,
+       parser_action_row3147,
+       parser_action_row3148,
+       parser_action_row3149,
+       parser_action_row3150,
+       parser_action_row3151,
+       parser_action_row3152,
+       parser_action_row3153,
+       parser_action_row3154,
+       parser_action_row3155,
+       parser_action_row3156,
+       parser_action_row3157,
+       parser_action_row3158,
+       parser_action_row3159,
+       parser_action_row3160,
+       parser_action_row3161,
+       parser_action_row3162,
+       parser_action_row3163,
+       parser_action_row3164,
+       parser_action_row3165,
+       parser_action_row3166,
+       parser_action_row3167,
+       parser_action_row3168,
+       parser_action_row3169,
+       parser_action_row3170,
+       parser_action_row3171,
+       parser_action_row3172,
+       parser_action_row3173,
+       parser_action_row3174,
+       parser_action_row3175,
+       parser_action_row3176,
+       parser_action_row3177,
+       parser_action_row3178,
+       parser_action_row3179,
+       parser_action_row3180,
+       parser_action_row3181,
+       parser_action_row3182,
+       parser_action_row3183,
+       parser_action_row3184,
+       parser_action_row3185,
+       parser_action_row3186,
+       parser_action_row3187,
+       parser_action_row3188,
+       parser_action_row3189,
+       parser_action_row3190,
+       parser_action_row3191,
+       parser_action_row3192,
+       parser_action_row3193,
+       parser_action_row3194,
+       parser_action_row3195,
+       parser_action_row3196,
+       parser_action_row3197,
+       parser_action_row3198,
+       parser_action_row3199,
+       parser_action_row3200,
+       parser_action_row3201,
+       parser_action_row3202,
+       parser_action_row3203,
+       parser_action_row3204,
+       parser_action_row3205,
+       parser_action_row3206,
+       parser_action_row3207,
+       parser_action_row3208,
+       parser_action_row3209,
+       parser_action_row3210,
+       parser_action_row3211,
+       parser_action_row3212,
+       parser_action_row3213,
+       parser_action_row3214,
+       parser_action_row3215,
+       parser_action_row3216,
+       parser_action_row3217,
+       parser_action_row3218,
+       parser_action_row3219,
+       parser_action_row3220,
+       parser_action_row3221,
+       parser_action_row3222,
+       parser_action_row3223,
+       parser_action_row3224,
+       parser_action_row3225,
+       parser_action_row3226,
+       parser_action_row3227,
+       parser_action_row3228,
+       parser_action_row3229,
+       parser_action_row3230,
+       parser_action_row3231,
+       parser_action_row3232,
+       parser_action_row3233,
+       parser_action_row3234,
+       parser_action_row3235,
+       parser_action_row3236,
+       parser_action_row3237,
+       parser_action_row3238,
+       parser_action_row3239,
+       parser_action_row3240,
+       parser_action_row3241,
+       parser_action_row3242,
+       parser_action_row3243,
+       parser_action_row3244,
+       parser_action_row3245,
+       parser_action_row3246,
+       parser_action_row3247,
+       parser_action_row3248,
+       parser_action_row3249,
+       parser_action_row3250,
+       parser_action_row3251,
+       parser_action_row3252,
+       parser_action_row3253,
+       parser_action_row3254,
+       parser_action_row3255,
+       parser_action_row3256,
+       parser_action_row3257,
+       parser_action_row3258,
+       parser_action_row3259,
+       parser_action_row3260,
+       parser_action_row3261,
+       parser_action_row3262,
+       parser_action_row3263,
+       parser_action_row3264,
+       parser_action_row3265,
+       parser_action_row3266,
+       parser_action_row3267,
+       parser_action_row3268,
+       parser_action_row3269,
+       parser_action_row3270,
+       parser_action_row3271,
+       parser_action_row3272,
+       parser_action_row3273,
+       parser_action_row3274,
+       parser_action_row3275,
+       parser_action_row3276,
+       parser_action_row3277,
+       parser_action_row3278,
+       parser_action_row3279,
+       parser_action_row3280,
+       parser_action_row3281,
+       parser_action_row3282,
+       parser_action_row3283,
+       parser_action_row3284,
+       parser_action_row3285,
+       parser_action_row3286,
+       parser_action_row3287,
+       parser_action_row3288,
+       parser_action_row3289,
+       parser_action_row3290,
+       parser_action_row3291,
+       parser_action_row3292,
+       parser_action_row3293,
+       parser_action_row3294,
+       parser_action_row3295,
+       parser_action_row3296,
+       parser_action_row3297,
+       parser_action_row3298,
+       parser_action_row3299,
+       parser_action_row3300,
+       parser_action_row3301,
+       parser_action_row3302,
+       parser_action_row3303,
+       parser_action_row3304,
+       parser_action_row3305,
+       parser_action_row3306,
+       parser_action_row3307,
+       parser_action_row3308,
+       parser_action_row3309,
+       parser_action_row3310,
+       parser_action_row3311,
+       parser_action_row3312,
+       parser_action_row3313,
+       parser_action_row3314,
+       parser_action_row3315,
+       parser_action_row3316,
+       parser_action_row3317,
+       parser_action_row3318,
+       parser_action_row3319,
+       parser_action_row3320,
+       parser_action_row3321,
+       parser_action_row3322,
+       parser_action_row3323,
+       parser_action_row3324,
+       parser_action_row3325,
+       parser_action_row3326,
+       parser_action_row3327,
+       parser_action_row3328,
+       parser_action_row3329,
+       parser_action_row3330,
+       parser_action_row3331,
+       parser_action_row3332,
+       parser_action_row3333,
+       parser_action_row3334,
+       parser_action_row3335,
+       parser_action_row3336,
+       parser_action_row3337,
+       parser_action_row3338,
+       parser_action_row3339,
+       parser_action_row3340,
+       parser_action_row3341,
+       parser_action_row3342,
+       parser_action_row3343,
+       parser_action_row3344,
+       parser_action_row3345,
+       parser_action_row3346,
+       parser_action_row3347,
+       parser_action_row3348,
+       parser_action_row3349,
+       parser_action_row3350,
+       parser_action_row3351,
+       parser_action_row3352,
+       parser_action_row3353,
+       parser_action_row3354,
+       parser_action_row3355,
+       parser_action_row3356,
+       parser_action_row3357,
+       parser_action_row3358,
+       parser_action_row3359,
+       parser_action_row3360,
+       parser_action_row3361,
+       parser_action_row3362,
+       parser_action_row3363,
+       parser_action_row3364,
+       parser_action_row3365,
+       parser_action_row3366,
+       parser_action_row3367,
+       parser_action_row3368,
+       parser_action_row3369,
+       parser_action_row3370,
+       parser_action_row3371,
+       parser_action_row3372,
+       parser_action_row3373,
+       parser_action_row3374,
+       parser_action_row3375,
+       parser_action_row3376,
+       parser_action_row3377,
+       parser_action_row3378,
+       parser_action_row3379,
+       parser_action_row3380,
+       parser_action_row3381,
+       parser_action_row3382,
+       parser_action_row3383,
+       parser_action_row3384,
+       parser_action_row3385,
+       parser_action_row3386,
+       parser_action_row3387,
+       parser_action_row3388,
+       parser_action_row3389,
+       parser_action_row3390,
+       parser_action_row3391,
+       parser_action_row3392,
+       parser_action_row3393,
+       parser_action_row3394,
+       parser_action_row3395,
+       parser_action_row3396,
+       parser_action_row3397,
+       parser_action_row3398,
+       parser_action_row3399,
+       parser_action_row3400,
+       parser_action_row3401,
+       parser_action_row3402,
+       parser_action_row3403,
+       parser_action_row3404,
+       parser_action_row3405,
+       parser_action_row3406,
+       parser_action_row3407,
+       parser_action_row3408,
+       parser_action_row3409,
+       parser_action_row3410,
+       parser_action_row3411,
+       parser_action_row3412,
+       parser_action_row3413,
+       parser_action_row3414,
+       parser_action_row3415,
+       parser_action_row3416,
+       parser_action_row3417,
+       parser_action_row3418,
+       parser_action_row3419,
+       parser_action_row3420,
+       parser_action_row3421,
+       parser_action_row3422,
+       parser_action_row3423,
+       parser_action_row3424,
+       parser_action_row3425,
+       parser_action_row3426,
+       parser_action_row3427,
+       parser_action_row3428,
+       parser_action_row3429,
+       parser_action_row3430,
+       parser_action_row3431,
+       parser_action_row3432,
+       parser_action_row3433,
+       parser_action_row3434,
+       parser_action_row3435,
+       parser_action_row3436,
+       parser_action_row3437,
+       parser_action_row3438,
+       parser_action_row3439,
+       parser_action_row3440,
+       parser_action_row3441,
+       parser_action_row3442,
+       parser_action_row3443,
+       parser_action_row3444,
+       parser_action_row3445,
+       parser_action_row3446,
+       parser_action_row3447,
+       parser_action_row3448,
+       parser_action_row3449,
+       parser_action_row3450,
+       parser_action_row3451,
+       parser_action_row3452,
+       parser_action_row3453,
+       parser_action_row3454,
+       parser_action_row3455,
+       parser_action_row3456,
+       parser_action_row3457,
+       parser_action_row3458,
+       parser_action_row3459,
+       parser_action_row3460,
+       parser_action_row3461,
+       parser_action_row3462,
+       parser_action_row3463,
+       parser_action_row3464,
+       parser_action_row3465,
+       parser_action_row3466,
+       parser_action_row3467,
+       parser_action_row3468,
+       parser_action_row3469,
+       parser_action_row3470,
+       parser_action_row3471,
+       parser_action_row3472,
+       parser_action_row3473,
+       parser_action_row3474,
+       parser_action_row3475,
+       parser_action_row3476,
+       parser_action_row3477,
+       parser_action_row3478,
+       parser_action_row3479,
+       parser_action_row3480,
+       parser_action_row3481,
+       parser_action_row3482,
+       parser_action_row3483,
+       parser_action_row3484,
+       parser_action_row3485,
+       parser_action_row3486,
+       parser_action_row3487,
+       parser_action_row3488,
+       parser_action_row3489,
+       parser_action_row3490,
+       parser_action_row3491,
+       parser_action_row3492,
+       parser_action_row3493,
+       parser_action_row3494,
+       parser_action_row3495,
+       parser_action_row3496,
+       parser_action_row3497,
+       parser_action_row3498,
+       parser_action_row3499,
+       parser_action_row3500,
+       parser_action_row3501,
+       parser_action_row3502,
+       parser_action_row3503,
+       parser_action_row3504,
+       parser_action_row3505,
+       parser_action_row3506,
+       parser_action_row3507,
+       parser_action_row3508,
+       parser_action_row3509,
+       parser_action_row3510,
+       parser_action_row3511,
+       parser_action_row3512,
+       parser_action_row3513,
+       parser_action_row3514,
+       parser_action_row3515,
+       parser_action_row3516,
+       parser_action_row3517,
+       parser_action_row3518,
+       parser_action_row3519,
+       parser_action_row3520,
+       parser_action_row3521,
+       parser_action_row3522,
+       parser_action_row3523,
+       parser_action_row3524,
+       parser_action_row3525,
+       parser_action_row3526,
+       parser_action_row3527,
+       parser_action_row3528,
+       parser_action_row3529,
+       parser_action_row3530,
+       parser_action_row3531,
+       parser_action_row3532,
+       parser_action_row3533,
+       parser_action_row3534,
+       parser_action_row3535,
+       parser_action_row3536,
+       parser_action_row3537,
+       parser_action_row3538,
+       parser_action_row3539,
+       parser_action_row3540,
+       parser_action_row3541,
+       parser_action_row3542,
+       parser_action_row3543,
+       parser_action_row3544,
+       parser_action_row3545,
+       parser_action_row3546,
+       parser_action_row3547,
+       parser_action_row3548,
+       parser_action_row3549,
+       parser_action_row3550,
+       parser_action_row3551,
+       parser_action_row3552,
+       parser_action_row3553,
+       parser_action_row3554,
+       parser_action_row3555,
+       parser_action_row3556,
+       parser_action_row3557,
+       parser_action_row3558,
+       parser_action_row3559,
+       parser_action_row3560,
+       parser_action_row3561,
+       parser_action_row3562,
+       parser_action_row3563,
+       parser_action_row3564,
+       parser_action_row3565,
+       parser_action_row3566,
+       parser_action_row3567,
+       parser_action_row3568,
+       parser_action_row3569,
+       parser_action_row3570,
+       parser_action_row3571,
+       parser_action_row3572,
+       parser_action_row3573,
+       parser_action_row3574,
+       parser_action_row3575,
+       parser_action_row3576,
+       parser_action_row3577,
+       parser_action_row3578,
+       parser_action_row3579,
+       parser_action_row3580,
+       parser_action_row3581,
+       parser_action_row3582,
+       parser_action_row3583,
+       parser_action_row3584,
+       parser_action_row3585,
+       parser_action_row3586,
+       parser_action_row3587,
+       parser_action_row3588,
+       parser_action_row3589,
+       parser_action_row3590,
+       parser_action_row3591,
+       parser_action_row3592,
+       parser_action_row3593,
+       parser_action_row3594,
+       parser_action_row3595,
+       parser_action_row3596,
+       parser_action_row3597,
+       parser_action_row3598,
+       parser_action_row3599,
+       parser_action_row3600,
+       parser_action_row3601,
+       parser_action_row3602,
+       parser_action_row3603,
+       parser_action_row3604,
+       parser_action_row3605,
+       parser_action_row3606,
+       parser_action_row3607,
+       parser_action_row3608,
+       parser_action_row3609,
+       parser_action_row3610,
+       parser_action_row3611,
+       parser_action_row3612,
+       parser_action_row3613,
+       parser_action_row3614,
+       parser_action_row3615,
+       parser_action_row3616,
+       parser_action_row3617,
+       parser_action_row3618,
+       parser_action_row3619,
+       parser_action_row3620,
+       parser_action_row3621,
+       parser_action_row3622,
+       parser_action_row3623,
+       parser_action_row3624,
+       parser_action_row3625,
+       parser_action_row3626,
+       parser_action_row3627,
+       parser_action_row3628,
+       parser_action_row3629,
+       parser_action_row3630,
+       parser_action_row3631,
+       parser_action_row3632,
+       parser_action_row3633,
+       parser_action_row3634,
+       parser_action_row3635,
+       parser_action_row3636,
+       parser_action_row3637,
+       parser_action_row3638,
+       parser_action_row3639,
+       parser_action_row3640,
+       parser_action_row3641,
+       parser_action_row3642,
+       parser_action_row3643,
+       parser_action_row3644,
+       parser_action_row3645,
+       parser_action_row3646,
+       parser_action_row3647,
+       parser_action_row3648,
+       parser_action_row3649,
+       parser_action_row3650,
+       parser_action_row3651,
+       parser_action_row3652,
+       parser_action_row3653,
+       parser_action_row3654,
+       parser_action_row3655,
+       parser_action_row3656,
+       parser_action_row3657,
+       parser_action_row3658,
+       parser_action_row3659,
+       parser_action_row3660,
+       parser_action_row3661,
+       parser_action_row3662,
+       parser_action_row3663,
+       parser_action_row3664,
+       parser_action_row3665,
+       parser_action_row3666,
+       parser_action_row3667,
+       parser_action_row3668,
+       parser_action_row3669,
+       parser_action_row3670,
+       parser_action_row3671,
+       parser_action_row3672,
+       parser_action_row3673,
+       parser_action_row3674,
+       parser_action_row3675,
+       parser_action_row3676,
+       parser_action_row3677,
+       parser_action_row3678,
+       parser_action_row3679,
+       parser_action_row3680,
+       parser_action_row3681,
+       parser_action_row3682,
+       parser_action_row3683,
+       parser_action_row3684,
+       parser_action_row3685,
+       parser_action_row3686,
+       parser_action_row3687,
+       parser_action_row3688,
+       parser_action_row3689,
+       parser_action_row3690,
+       parser_action_row3691,
+       parser_action_row3692,
+       parser_action_row3693,
+       parser_action_row3694,
+       parser_action_row3695,
+       parser_action_row3696,
+       parser_action_row3697,
+       parser_action_row3698,
+       parser_action_row3699,
+       parser_action_row3700,
+       parser_action_row3701,
+       parser_action_row3702,
+       parser_action_row3703,
+       parser_action_row3704,
+       parser_action_row3705,
+       parser_action_row3706,
+       parser_action_row3707,
+       parser_action_row3708,
+       parser_action_row3709,
+       parser_action_row3710,
+       parser_action_row3711,
+       parser_action_row3712,
+       parser_action_row3713,
+       parser_action_row3714,
+       parser_action_row3715,
+       parser_action_row3716,
+       parser_action_row3717,
+       parser_action_row3718,
+       parser_action_row3719,
+       parser_action_row3720,
+       parser_action_row3721,
+       parser_action_row3722,
+       parser_action_row3723,
+       parser_action_row3724,
+       parser_action_row3725,
+       parser_action_row3726,
+       parser_action_row3727,
+       parser_action_row3728,
+       parser_action_row3729,
+       parser_action_row3730,
+       parser_action_row3731,
+       parser_action_row3732,
+       parser_action_row3733,
+       parser_action_row3734,
+       parser_action_row3735,
+       parser_action_row3736,
+       parser_action_row3737,
+       parser_action_row3738,
+       parser_action_row3739,
+       parser_action_row3740,
+       parser_action_row3741,
+       parser_action_row3742,
+       parser_action_row3743,
+       parser_action_row3744,
+       parser_action_row3745,
+       parser_action_row3746,
+       parser_action_row3747,
+       parser_action_row3748,
+       parser_action_row3749,
+       parser_action_row3750,
+       parser_action_row3751,
+       parser_action_row3752,
+       parser_action_row3753,
+       parser_action_row3754,
+       parser_action_row3755,
+       parser_action_row3756,
+       parser_action_row3757,
+       parser_action_row3758,
+       parser_action_row3759,
+       parser_action_row3760,
+       parser_action_row3761,
+       parser_action_row3762,
+       parser_action_row3763,
+       parser_action_row3764,
+       parser_action_row3765,
+       parser_action_row3766,
+       parser_action_row3767,
+       parser_action_row3768,
+       parser_action_row3769,
+       parser_action_row3770,
+       parser_action_row3771,
+       parser_action_row3772,
+       parser_action_row3773,
+       parser_action_row3774,
+       parser_action_row3775,
+       parser_action_row3776,
+       parser_action_row3777,
+       parser_action_row3778,
+       parser_action_row3779,
+       parser_action_row3780,
+       parser_action_row3781,
+       parser_action_row3782,
+       parser_action_row3783,
+       parser_action_row3784,
+       parser_action_row3785,
+       parser_action_row3786,
+       parser_action_row3787,
+       parser_action_row3788,
+       parser_action_row3789,
+       parser_action_row3790,
+       parser_action_row3791,
+       parser_action_row3792,
+       parser_action_row3793,
+       parser_action_row3794,
+       parser_action_row3795,
+       parser_action_row3796,
+       parser_action_row3797,
+       parser_action_row3798,
+       parser_action_row3799,
+       parser_action_row3800,
+       parser_action_row3801,
+       parser_action_row3802,
+       parser_action_row3803,
+       parser_action_row3804,
+       parser_action_row3805,
+       parser_action_row3806,
+       parser_action_row3807,
+       parser_action_row3808,
+       parser_action_row3809,
+       parser_action_row3810,
+       parser_action_row3811,
+       parser_action_row3812,
+       parser_action_row3813,
+       parser_action_row3814,
+       parser_action_row3815,
+       parser_action_row3816,
+       parser_action_row3817,
+       parser_action_row3818,
+       parser_action_row3819,
+       parser_action_row3820,
+       parser_action_row3821,
+       parser_action_row3822,
+       parser_action_row3823,
+       parser_action_row3824,
+       parser_action_row3825,
+       parser_action_row3826,
+       parser_action_row3827,
+       parser_action_row3828,
+       parser_action_row3829,
+       parser_action_row3830,
+       parser_action_row3831,
+       parser_action_row3832,
+       parser_action_row3833,
+       parser_action_row3834,
+       parser_action_row3835,
+       parser_action_row3836,
+       parser_action_row3837,
+       parser_action_row3838,
+       parser_action_row3839,
+       parser_action_row3840,
+       parser_action_row3841,
+       parser_action_row3842,
+       parser_action_row3843,
+       parser_action_row3844,
+       parser_action_row3845,
+       parser_action_row3846,
+       parser_action_row3847,
+       parser_action_row3848,
+       parser_action_row3849,
+       parser_action_row3850,
+       parser_action_row3851,
+       parser_action_row3852,
+       parser_action_row3853,
+       parser_action_row3854,
+       parser_action_row3855,
+       parser_action_row3856,
+       parser_action_row3857,
+       parser_action_row3858,
+       parser_action_row3859,
+       parser_action_row3860,
+       parser_action_row3861,
+       parser_action_row3862,
+       parser_action_row3863,
+       parser_action_row3864,
+       parser_action_row3865,
+       parser_action_row3866,
+       parser_action_row3867,
+       parser_action_row3868,
+       parser_action_row3869,
+       parser_action_row3870,
+       parser_action_row3871,
+       parser_action_row3872,
+       parser_action_row3873,
+       parser_action_row3874,
+       parser_action_row3875,
+       parser_action_row3876,
+       parser_action_row3877,
+       parser_action_row3878,
+       parser_action_row3879,
+       parser_action_row3880,
+       parser_action_row3881,
+       parser_action_row3882,
+       parser_action_row3883,
+       parser_action_row3884,
+       parser_action_row3885,
+       parser_action_row3886,
+       parser_action_row3887,
+       parser_action_row3888,
+       parser_action_row3889,
+       parser_action_row3890,
+       parser_action_row3891,
+       parser_action_row3892,
+       parser_action_row3893,
+       parser_action_row3894,
+       parser_action_row3895,
+       parser_action_row3896,
+       parser_action_row3897,
+       parser_action_row3898,
+       parser_action_row3899,
+       parser_action_row3900,
+       parser_action_row3901,
+       parser_action_row3902,
+       parser_action_row3903,
+       parser_action_row3904,
+       parser_action_row3905,
+       parser_action_row3906,
+       parser_action_row3907,
+       parser_action_row3908,
+       parser_action_row3909,
+       parser_action_row3910,
+       parser_action_row3911,
+       parser_action_row3912,
+       parser_action_row3913,
+       parser_action_row3914,
+       parser_action_row3915,
+       parser_action_row3916,
+       parser_action_row3917,
+       parser_action_row3918,
+       parser_action_row3919,
+       parser_action_row3920,
+       parser_action_row3921,
+       parser_action_row3922,
+       parser_action_row3923,
+       parser_action_row3924,
+       parser_action_row3925,
+       parser_action_row3926,
+       parser_action_row3927,
+       parser_action_row3928,
+       parser_action_row3929,
+       parser_action_row3930,
+       parser_action_row3931,
+       parser_action_row3932,
+       parser_action_row3933,
+       parser_action_row3934
 };
 
 static int parser_goto_row1[] = {
@@ -23510,39 +46989,39 @@ static int parser_goto_row2[] = {
 static int parser_goto_row3[] = {
        3,
        -1, 6,
-       18, 92,
-       28, 92
+       18, 104,
+       28, 104
 };
 static int parser_goto_row4[] = {
        9,
        -1, 7,
-       20, 100,
-       30, 100,
-       95, 100,
-       99, 100,
-       112, 100,
-       114, 100,
-       265, 100,
-       274, 100
+       20, 112,
+       30, 112,
+       107, 112,
+       111, 112,
+       128, 112,
+       130, 112,
+       328, 112,
+       348, 112
 };
 static int parser_goto_row5[] = {
        16,
        -1, 8,
        5, 26,
-       18, 93,
-       19, 96,
-       20, 101,
-       28, 110,
-       29, 113,
-       30, 115,
-       94, 264,
-       95, 266,
-       99, 268,
-       111, 273,
-       112, 275,
-       114, 276,
-       265, 509,
-       274, 512
+       18, 105,
+       19, 108,
+       20, 113,
+       28, 126,
+       29, 129,
+       30, 131,
+       106, 327,
+       107, 329,
+       111, 335,
+       127, 347,
+       128, 349,
+       130, 350,
+       328, 631,
+       348, 645
 };
 static int parser_goto_row6[] = {
        1,
@@ -23553,1818 +47032,4016 @@ static int parser_goto_row7[] = {
        -1, 10
 };
 static int parser_goto_row8[] = {
-       9,
-       -1, 815,
-       13, 61,
-       27, 109,
-       98, 267,
-       204, 398,
-       607, 811,
-       1023, 1195,
-       1199, 1195,
-       1331, 1480
+       28,
+       -1, 74,
+       40, 216,
+       121, 216,
+       225, 445,
+       226, 449,
+       227, 453,
+       228, 457,
+       330, 216,
+       343, 445,
+       344, 449,
+       345, 453,
+       346, 457,
+       429, 722,
+       430, 726,
+       431, 730,
+       432, 734,
+       636, 445,
+       637, 449,
+       638, 453,
+       639, 457,
+       641, 722,
+       642, 726,
+       643, 730,
+       644, 734,
+       914, 722,
+       915, 726,
+       916, 730,
+       917, 734
 };
 static int parser_goto_row9[] = {
-       1,
-       -1, 478
+       10,
+       -1, 1471,
+       1307, 1672,
+       1681, 2081,
+       1690, 2086,
+       1699, 2091,
+       1708, 2096,
+       2047, 2445,
+       2056, 2450,
+       2065, 2455,
+       2074, 2460
 };
 static int parser_goto_row10[] = {
-       1,
-       -1, 1355
+       2,
+       -1, 1867,
+       1868, 2237
 };
 static int parser_goto_row11[] = {
        2,
-       -1, 1501,
-       1502, 1612
+       -1, 1472,
+       2236, 2575
 };
 static int parser_goto_row12[] = {
        2,
-       -1, 1356,
-       1611, 1684
+       -1, 875,
+       883, 1173
 };
 static int parser_goto_row13[] = {
-       2,
-       -1, 1016,
-       1024, 1197
+       40,
+       -1, 876,
+       735, 1022,
+       879, 1157,
+       1023, 1309,
+       1036, 1323,
+       1041, 1333,
+       1046, 1343,
+       1051, 1353,
+       1291, 1640,
+       1296, 1650,
+       1301, 1660,
+       1306, 1670,
+       1324, 1683,
+       1334, 1692,
+       1344, 1701,
+       1354, 1710,
+       1641, 2049,
+       1651, 2058,
+       1661, 2067,
+       1671, 2076,
+       1865, 2234,
+       2077, 2462,
+       2235, 2574,
+       2463, 2806,
+       2465, 2807,
+       2467, 2809,
+       2469, 2811,
+       2471, 2813,
+       2798, 3156,
+       2800, 3158,
+       2802, 3160,
+       2804, 3162,
+       2808, 3166,
+       2810, 3168,
+       2812, 3170,
+       2814, 3172,
+       3157, 3477,
+       3159, 3479,
+       3161, 3481,
+       3163, 3483
 };
 static int parser_goto_row14[] = {
-       4,
-       -1, 1017,
-       1020, 1192,
-       1499, 1609,
-       1610, 1683
+       2,
+       -1, 877,
+       883, 1174
 };
 static int parser_goto_row15[] = {
-       2,
-       -1, 1018,
-       1024, 1198
+       1,
+       -1, 878
 };
 static int parser_goto_row16[] = {
-       1,
-       -1, 1019
+       60,
+       -1, 648,
+       357, 651,
+       715, 998,
+       717, 1000,
+       1032, 1315,
+       1034, 1317,
+       1037, 1325,
+       1039, 1327,
+       1042, 1335,
+       1044, 1337,
+       1047, 1345,
+       1049, 1347,
+       1287, 1632,
+       1289, 1634,
+       1292, 1642,
+       1294, 1644,
+       1297, 1652,
+       1299, 1654,
+       1302, 1662,
+       1304, 1664,
+       1870, 2242,
+       1888, 2292,
+       1926, 2345,
+       2248, 2588,
+       2252, 2595,
+       2288, 2647,
+       2654, 2989,
+       2658, 2996,
+       2666, 3008,
+       2668, 3013,
+       2672, 3020,
+       2680, 3032,
+       2682, 3037,
+       2686, 3044,
+       2694, 3056,
+       2696, 3061,
+       2700, 3068,
+       2708, 3080,
+       2918, 3244,
+       2922, 3251,
+       2930, 3263,
+       2932, 3268,
+       2936, 3275,
+       2944, 3287,
+       2946, 3292,
+       2950, 3299,
+       2958, 3311,
+       2960, 3316,
+       2964, 3323,
+       2972, 3335,
+       2983, 3340,
+       3238, 3534,
+       3620, 3799,
+       3633, 3804,
+       3646, 3809,
+       3659, 3814,
+       3752, 3875,
+       3765, 3880,
+       3778, 3885,
+       3791, 3890
 };
 static int parser_goto_row17[] = {
-       6,
-       -1, 1000,
-       853, 1003,
-       1686, 1760,
-       1690, 1768,
-       1700, 1781,
-       1872, 1903
+       80,
+       -1, 661,
+       718, 1002,
+       1035, 1319,
+       1040, 1329,
+       1045, 1339,
+       1050, 1349,
+       1169, 1498,
+       1290, 1636,
+       1295, 1646,
+       1300, 1656,
+       1305, 1666,
+       1476, 1872,
+       1487, 1886,
+       1494, 1918,
+       1869, 2239,
+       1873, 2246,
+       1876, 2250,
+       1883, 2282,
+       1888, 2293,
+       1894, 2302,
+       1901, 2312,
+       1908, 2322,
+       1915, 2332,
+       1921, 2339,
+       2247, 2585,
+       2251, 2592,
+       2252, 2596,
+       2258, 2605,
+       2265, 2615,
+       2272, 2625,
+       2279, 2635,
+       2285, 2642,
+       2296, 2656,
+       2299, 2660,
+       2306, 2670,
+       2309, 2674,
+       2316, 2684,
+       2319, 2688,
+       2326, 2698,
+       2329, 2702,
+       2599, 2920,
+       2602, 2924,
+       2609, 2934,
+       2612, 2938,
+       2619, 2948,
+       2622, 2952,
+       2629, 2962,
+       2632, 2966,
+       2653, 2986,
+       2657, 2993,
+       2658, 2997,
+       2663, 3003,
+       2667, 3010,
+       2671, 3017,
+       2672, 3021,
+       2677, 3027,
+       2681, 3034,
+       2685, 3041,
+       2686, 3045,
+       2691, 3051,
+       2695, 3058,
+       2699, 3065,
+       2700, 3069,
+       2705, 3075,
+       2917, 3241,
+       2921, 3248,
+       2922, 3252,
+       2927, 3258,
+       2931, 3265,
+       2935, 3272,
+       2936, 3276,
+       2941, 3282,
+       2945, 3289,
+       2949, 3296,
+       2950, 3300,
+       2955, 3306,
+       2959, 3313,
+       2963, 3320,
+       2964, 3324,
+       2969, 3330
 };
 static int parser_goto_row18[] = {
-       8,
-       -1, 1010,
-       1508, 1622,
-       1615, 1688,
-       1618, 1692,
-       1685, 1757,
-       1689, 1764,
-       1690, 1769,
-       1695, 1775
+       4,
+       -1, 1224,
+       944, 1247,
+       1923, 2342,
+       2649, 2981
 };
 static int parser_goto_row19[] = {
-       8,
-       -1, 240,
-       109, 272,
-       267, 510,
-       398, 615,
-       811, 966,
-       815, 970,
-       1195, 1358,
-       1480, 1599
+       7,
+       -1, 160,
+       164, 366,
+       166, 367,
+       368, 664,
+       1245, 366,
+       1246, 367,
+       1598, 664
 };
 static int parser_goto_row20[] = {
-       7,
-       -1, 680,
-       682, 862,
-       683, 863,
-       864, 1014,
-       1347, 862,
-       1348, 863,
-       1494, 1014
+       63,
+       -1, 161,
+       163, 364,
+       167, 369,
+       428, 718,
+       744, 1035,
+       748, 1040,
+       752, 1045,
+       756, 1050,
+       1007, 1290,
+       1011, 1295,
+       1015, 1300,
+       1019, 1305,
+       1161, 1476,
+       1168, 1494,
+       1474, 1869,
+       1477, 1873,
+       1480, 1876,
+       1486, 1883,
+       1495, 1921,
+       1822, 2177,
+       1874, 2247,
+       1877, 2251,
+       1884, 2285,
+       1891, 2296,
+       1893, 2299,
+       1898, 2306,
+       1900, 2309,
+       1905, 2316,
+       1907, 2319,
+       1912, 2326,
+       1914, 2329,
+       2255, 2599,
+       2257, 2602,
+       2262, 2609,
+       2264, 2612,
+       2269, 2619,
+       2271, 2622,
+       2276, 2629,
+       2278, 2632,
+       2294, 2653,
+       2297, 2657,
+       2300, 2663,
+       2304, 2667,
+       2307, 2671,
+       2310, 2677,
+       2314, 2681,
+       2317, 2685,
+       2320, 2691,
+       2324, 2695,
+       2327, 2699,
+       2330, 2705,
+       2597, 2917,
+       2600, 2921,
+       2603, 2927,
+       2607, 2931,
+       2610, 2935,
+       2613, 2941,
+       2617, 2945,
+       2620, 2949,
+       2623, 2955,
+       2627, 2959,
+       2630, 2963,
+       2633, 2969
 };
 static int parser_goto_row21[] = {
-       6,
-       -1, 858,
-       1505, 1615,
-       1507, 1618,
-       1613, 1685,
-       1616, 1689,
-       1619, 1695
+       1,
+       -1, 653
 };
 static int parser_goto_row22[] = {
-       1,
-       -1, 1179
+       2,
+       -1, 936,
+       938, 1234
 };
 static int parser_goto_row23[] = {
        2,
-       -1, 1338,
-       1340, 1488
+       -1, 654,
+       1233, 1591
 };
 static int parser_goto_row24[] = {
-       2,
-       -1, 1180,
-       1487, 1602
+       80,
+       -1, 662,
+       661, 947,
+       718, 1003,
+       1002, 1285,
+       1035, 1320,
+       1040, 1330,
+       1045, 1340,
+       1050, 1350,
+       1290, 1637,
+       1295, 1647,
+       1300, 1657,
+       1305, 1667,
+       1319, 1679,
+       1329, 1688,
+       1339, 1697,
+       1349, 1706,
+       1494, 1919,
+       1636, 2045,
+       1646, 2054,
+       1656, 2063,
+       1666, 2072,
+       1869, 2240,
+       1883, 2283,
+       1918, 2336,
+       1921, 2340,
+       2239, 2578,
+       2247, 2586,
+       2282, 2639,
+       2285, 2643,
+       2299, 2661,
+       2309, 2675,
+       2319, 2689,
+       2329, 2703,
+       2339, 2714,
+       2585, 2908,
+       2602, 2925,
+       2612, 2939,
+       2622, 2953,
+       2632, 2967,
+       2642, 2978,
+       2653, 2987,
+       2660, 3000,
+       2663, 3004,
+       2667, 3011,
+       2674, 3024,
+       2677, 3028,
+       2681, 3035,
+       2688, 3048,
+       2691, 3052,
+       2695, 3059,
+       2702, 3072,
+       2705, 3076,
+       2917, 3242,
+       2924, 3255,
+       2927, 3259,
+       2931, 3266,
+       2938, 3279,
+       2941, 3283,
+       2945, 3290,
+       2952, 3303,
+       2955, 3307,
+       2959, 3314,
+       2966, 3327,
+       2969, 3331,
+       2986, 3344,
+       3003, 3358,
+       3010, 3363,
+       3027, 3377,
+       3034, 3382,
+       3051, 3396,
+       3058, 3401,
+       3075, 3415,
+       3241, 3538,
+       3258, 3552,
+       3265, 3557,
+       3282, 3571,
+       3289, 3576,
+       3306, 3590,
+       3313, 3595,
+       3330, 3609
 };
 static int parser_goto_row25[] = {
-       8,
-       -1, 1011,
-       1010, 1187,
-       1618, 1693,
-       1685, 1758,
-       1692, 1772,
-       1695, 1776,
-       1757, 1818,
-       1775, 1834
+       2,
+       -1, 1595,
+       1596, 2015
 };
 static int parser_goto_row26[] = {
        2,
-       -1, 1491,
-       1492, 1604
+       -1, 1240,
+       2014, 2426
 };
 static int parser_goto_row27[] = {
-       2,
-       -1, 1342,
-       1603, 1679
+       1,
+       -1, 1241
 };
 static int parser_goto_row28[] = {
        1,
-       -1, 1343
+       -1, 1242
 };
 static int parser_goto_row29[] = {
        1,
-       -1, 1344
+       -1, -1
 };
 static int parser_goto_row30[] = {
        1,
-       -1, -1
+       -1, 98
 };
 static int parser_goto_row31[] = {
-       1,
-       -1, 86
+       101,
+       -1, 99,
+       599, 879,
+       662, 948,
+       735, 1023,
+       947, 1251,
+       1003, 1286,
+       1036, 1324,
+       1041, 1334,
+       1046, 1344,
+       1051, 1354,
+       1285, 1631,
+       1291, 1641,
+       1296, 1651,
+       1301, 1661,
+       1306, 1671,
+       1320, 1680,
+       1330, 1689,
+       1340, 1698,
+       1350, 1707,
+       1637, 2046,
+       1647, 2055,
+       1657, 2064,
+       1667, 2073,
+       1679, 2080,
+       1688, 2085,
+       1697, 2090,
+       1706, 2095,
+       1865, 2235,
+       1919, 2337,
+       2045, 2444,
+       2054, 2449,
+       2063, 2454,
+       2072, 2459,
+       2077, 2463,
+       2240, 2579,
+       2283, 2640,
+       2336, 2711,
+       2340, 2715,
+       2465, 2808,
+       2467, 2810,
+       2469, 2812,
+       2471, 2814,
+       2578, 2902,
+       2586, 2909,
+       2639, 2975,
+       2643, 2979,
+       2661, 3001,
+       2675, 3025,
+       2689, 3049,
+       2703, 3073,
+       2714, 3084,
+       2798, 3157,
+       2800, 3159,
+       2802, 3161,
+       2804, 3163,
+       2908, 3233,
+       2925, 3256,
+       2939, 3280,
+       2953, 3304,
+       2967, 3328,
+       2978, 3339,
+       2987, 3345,
+       3000, 3355,
+       3004, 3359,
+       3011, 3364,
+       3024, 3374,
+       3028, 3378,
+       3035, 3383,
+       3048, 3393,
+       3052, 3397,
+       3059, 3402,
+       3072, 3412,
+       3076, 3416,
+       3242, 3539,
+       3255, 3549,
+       3259, 3553,
+       3266, 3558,
+       3279, 3568,
+       3283, 3572,
+       3290, 3577,
+       3303, 3587,
+       3307, 3591,
+       3314, 3596,
+       3327, 3606,
+       3331, 3610,
+       3344, 3615,
+       3358, 3625,
+       3363, 3628,
+       3377, 3638,
+       3382, 3641,
+       3396, 3651,
+       3401, 3654,
+       3415, 3664,
+       3538, 3747,
+       3552, 3757,
+       3557, 3760,
+       3571, 3770,
+       3576, 3773,
+       3590, 3783,
+       3595, 3786,
+       3609, 3796
 };
 static int parser_goto_row32[] = {
-       11,
-       -1, 87,
-       865, 1020,
-       1011, 1188,
-       1187, 1353,
-       1499, 1610,
-       1693, 1773,
-       1758, 1819,
-       1772, 1831,
-       1776, 1835,
-       1818, 1866,
-       1834, 1877
-};
-static int parser_goto_row33[] = {
        1,
        -1, -1
 };
-static int parser_goto_row34[] = {
+static int parser_goto_row33[] = {
        5,
        -1, 11,
-       19, 97,
-       29, 97,
-       94, 97,
-       111, 97
+       19, 109,
+       29, 109,
+       106, 109,
+       127, 109
+};
+static int parser_goto_row34[] = {
+       40,
+       -1, 568,
+       277, 538,
+       360, 656,
+       739, 1029,
+       844, 1136,
+       942, 1243,
+       1104, 1416,
+       1135, 1416,
+       1172, 1512,
+       1415, 1416,
+       1452, 1416,
+       1499, 1926,
+       1586, 1512,
+       1730, 2109,
+       1887, 2288,
+       1930, 2346,
+       1945, 2367,
+       2004, 1512,
+       2014, 1243,
+       2035, 2440,
+       2138, 2497,
+       2303, 2666,
+       2313, 2680,
+       2323, 2694,
+       2333, 2708,
+       2419, 1512,
+       2420, 1512,
+       2421, 1512,
+       2422, 1512,
+       2427, 2791,
+       2606, 2930,
+       2616, 2944,
+       2626, 2958,
+       2636, 2972,
+       2764, 1512,
+       2765, 1512,
+       2766, 1512,
+       2767, 1512,
+       3152, 3473,
+       3740, 3871
 };
 static int parser_goto_row35[] = {
-       22,
-       -1, 434,
-       211, 404,
-       557, 761,
-       628, 831,
-       809, 963,
-       830, 963,
-       962, 963,
-       981, 963,
-       1006, 1181,
-       1080, 1240,
-       1182, 1345,
-       1196, 1370,
-       1202, 1391,
-       1227, 1407,
-       1257, 1427,
-       1513, 1624,
-       1603, 1345,
-       1623, 1700,
-       1678, 1370,
-       1680, 1754,
-       1809, 1858,
-       1815, 1863
+       5,
+       -1, 539,
+       692, 971,
+       783, 1073,
+       837, 1133,
+       838, 1134
 };
 static int parser_goto_row36[] = {
-       5,
-       -1, 405,
-       532, 730,
-       578, 779,
-       621, 828,
-       622, 829
+       4,
+       -1, 1417,
+       1135, 1453,
+       1415, 1769,
+       1452, 1809
 };
 static int parser_goto_row37[] = {
-       4,
-       -1, 964,
-       830, 982,
-       962, 1105,
-       981, 1124
+       2,
+       -1, 1771,
+       1772, 2139
 };
 static int parser_goto_row38[] = {
-       2,
-       -1, 1107,
-       1108, 1258
+       14,
+       -1, 162,
+       652, 931,
+       932, 1230,
+       934, 1231,
+       1475, 1870,
+       1875, 2248,
+       2295, 2654,
+       2305, 2668,
+       2315, 2682,
+       2325, 2696,
+       2598, 2918,
+       2608, 2932,
+       2618, 2946,
+       2628, 2960
 };
 static int parser_goto_row39[] = {
-       5,
-       -1, 859,
-       1178, 1333,
-       1334, 1484,
-       1336, 1485,
-       1614, 1686
+       17,
+       -1, 440,
+       441, 741,
+       534, 832,
+       591, 868,
+       833, 1128,
+       1470, 1863,
+       1489, 1888,
+       1864, 2233,
+       1878, 2252,
+       2298, 2658,
+       2308, 2672,
+       2318, 2686,
+       2328, 2700,
+       2601, 2922,
+       2611, 2936,
+       2621, 2950,
+       2631, 2964
 };
 static int parser_goto_row40[] = {
-       8,
-       -1, 334,
-       335, 559,
-       400, 616,
-       457, 650,
-       617, 823,
-       1354, 1497,
-       1498, 1608,
-       1617, 1690
+       178,
+       -1, 219,
+       50, 231,
+       515, 809,
+       660, 945,
+       807, 1099,
+       946, 1250,
+       1001, 1283,
+       1053, 1388,
+       1056, 1391,
+       1129, 1450,
+       1284, 1630,
+       1318, 1677,
+       1328, 1686,
+       1338, 1695,
+       1348, 1704,
+       1358, 1718,
+       1360, 231,
+       1497, 1924,
+       1635, 2043,
+       1645, 2052,
+       1655, 2061,
+       1665, 2070,
+       1678, 2079,
+       1687, 2084,
+       1696, 2089,
+       1705, 2094,
+       1738, 2115,
+       1742, 2119,
+       1871, 2243,
+       1885, 2286,
+       1917, 2334,
+       1925, 2344,
+       2044, 2443,
+       2053, 2448,
+       2062, 2453,
+       2071, 2458,
+       2107, 809,
+       2116, 2487,
+       2238, 2576,
+       2244, 2581,
+       2245, 2582,
+       2249, 2589,
+       2281, 2637,
+       2287, 2646,
+       2290, 2650,
+       2301, 2664,
+       2311, 2678,
+       2321, 2692,
+       2331, 2706,
+       2335, 2710,
+       2338, 2712,
+       2476, 1099,
+       2577, 2901,
+       2583, 2905,
+       2584, 2906,
+       2590, 2911,
+       2591, 2912,
+       2593, 2914,
+       2604, 2928,
+       2614, 2942,
+       2624, 2956,
+       2634, 2970,
+       2638, 2974,
+       2641, 2976,
+       2652, 2984,
+       2655, 2990,
+       2659, 2998,
+       2665, 3007,
+       2669, 3014,
+       2673, 3022,
+       2679, 3031,
+       2683, 3038,
+       2687, 3046,
+       2693, 3055,
+       2697, 3062,
+       2701, 3070,
+       2707, 3079,
+       2713, 3083,
+       2817, 1388,
+       2818, 1391,
+       2822, 1450,
+       2907, 3232,
+       2913, 3236,
+       2916, 3239,
+       2919, 3245,
+       2923, 3253,
+       2929, 3262,
+       2933, 3269,
+       2937, 3277,
+       2943, 3286,
+       2947, 3293,
+       2951, 3301,
+       2957, 3310,
+       2961, 3317,
+       2965, 3325,
+       2971, 3334,
+       2977, 3338,
+       2985, 3342,
+       2991, 3347,
+       2992, 3348,
+       2994, 3350,
+       2999, 3354,
+       3002, 3356,
+       3009, 3361,
+       3015, 3366,
+       3016, 3367,
+       3018, 3369,
+       3023, 3373,
+       3026, 3375,
+       3033, 3380,
+       3039, 3385,
+       3040, 3386,
+       3042, 3388,
+       3047, 3392,
+       3050, 3394,
+       3057, 3399,
+       3063, 3404,
+       3064, 3405,
+       3066, 3407,
+       3071, 3411,
+       3074, 3413,
+       3240, 3536,
+       3246, 3541,
+       3247, 3542,
+       3249, 3544,
+       3254, 3548,
+       3257, 3550,
+       3264, 3555,
+       3270, 3560,
+       3271, 3561,
+       3273, 3563,
+       3278, 3567,
+       3281, 3569,
+       3288, 3574,
+       3294, 3579,
+       3295, 3580,
+       3297, 3582,
+       3302, 3586,
+       3305, 3588,
+       3312, 3593,
+       3318, 3598,
+       3319, 3599,
+       3321, 3601,
+       3326, 3605,
+       3329, 3607,
+       3343, 3614,
+       3349, 3618,
+       3352, 3621,
+       3357, 3624,
+       3362, 3627,
+       3368, 3631,
+       3371, 3634,
+       3376, 3637,
+       3381, 3640,
+       3387, 3644,
+       3390, 3647,
+       3395, 3650,
+       3400, 3653,
+       3406, 3657,
+       3409, 3660,
+       3414, 3663,
+       3488, 2119,
+       3537, 3746,
+       3543, 3750,
+       3546, 3753,
+       3551, 3756,
+       3556, 3759,
+       3562, 3763,
+       3565, 3766,
+       3570, 3769,
+       3575, 3772,
+       3581, 3776,
+       3584, 3779,
+       3589, 3782,
+       3594, 3785,
+       3600, 3789,
+       3603, 3792,
+       3608, 3795
 };
 static int parser_goto_row41[] = {
-       34,
-       -1, 157,
-       37, 166,
-       389, 603,
-       601, 804,
-       765, 946,
-       768, 949,
-       824, 979,
-       916, 1068,
-       918, 166,
-       1009, 1185,
-       1087, 1245,
-       1091, 1249,
-       1186, 1352,
-       1238, 603,
-       1246, 1422,
-       1412, 804,
-       1536, 946,
-       1537, 949,
-       1541, 979,
-       1621, 1698,
-       1687, 1761,
-       1691, 1770,
-       1699, 1780,
-       1728, 1249,
-       1756, 1816,
-       1762, 1821,
-       1763, 1822,
-       1766, 1826,
-       1771, 1830,
-       1774, 1832,
-       1817, 1865,
-       1823, 1869,
-       1828, 1873,
-       1833, 1876
+       4,
+       -1, 75,
+       221, 435,
+       1378, 1739,
+       1713, 2099
 };
 static int parser_goto_row42[] = {
-       1,
-       -1, 62
+       6,
+       -1, 436,
+       810, 1101,
+       1025, 1311,
+       1713, 2100,
+       1720, 2100,
+       2478, 2821
 };
 static int parser_goto_row43[] = {
-       4,
-       -1, 63,
-       159, 329,
-       936, 1088,
-       1063, 1230
+       8,
+       -1, 303,
+       305, 601,
+       738, 601,
+       761, 601,
+       1238, 601,
+       1602, 601,
+       2118, 601,
+       3506, 601
 };
 static int parser_goto_row44[] = {
-       6,
-       -1, 330,
-       604, 806,
-       757, 908,
-       1063, 1231,
-       1070, 1231,
-       1414, 1540
+       24,
+       -1, 220,
+       13, 76,
+       27, 76,
+       110, 76,
+       221, 437,
+       232, 460,
+       304, 600,
+       602, 600,
+       657, 940,
+       737, 600,
+       760, 600,
+       810, 460,
+       949, 1252,
+       1025, 460,
+       1028, 600,
+       1052, 1371,
+       1054, 600,
+       1236, 600,
+       1378, 1740,
+       1713, 437,
+       1720, 460,
+       2478, 460,
+       2816, 1371,
+       2850, 3202
 };
 static int parser_goto_row45[] = {
-       5,
-       -1, 241,
-       243, 480,
-       556, 480,
-       563, 480,
-       1248, 480
+       18,
+       -1, 264,
+       54, 265,
+       222, 438,
+       233, 461,
+       542, 842,
+       543, 843,
+       1363, 1725,
+       1364, 1726,
+       1389, 1746,
+       1392, 1748,
+       1451, 1808,
+       1501, 1928,
+       1502, 1929,
+       1716, 2101,
+       1722, 2104,
+       3175, 3489,
+       3177, 3490,
+       3179, 3491
 };
 static int parser_goto_row46[] = {
-       20,
-       -1, 158,
-       13, 64,
-       27, 64,
-       98, 64,
-       159, 331,
-       167, 339,
-       242, 479,
-       481, 479,
-       555, 479,
-       562, 479,
-       604, 339,
-       757, 339,
-       760, 479,
-       764, 929,
-       766, 479,
-       936, 1089,
-       1063, 331,
-       1070, 339,
-       1414, 339,
-       1535, 929
+       56,
+       -1, 77,
+       279, 569,
+       1052, 1372,
+       1126, 569,
+       1141, 569,
+       1172, 1513,
+       1356, 1372,
+       1360, 1372,
+       1436, 569,
+       1579, 569,
+       1586, 1513,
+       1797, 569,
+       1798, 569,
+       1799, 569,
+       1800, 569,
+       1932, 569,
+       1985, 569,
+       2004, 1513,
+       2107, 1372,
+       2153, 569,
+       2154, 569,
+       2155, 569,
+       2156, 569,
+       2163, 569,
+       2406, 569,
+       2407, 569,
+       2408, 569,
+       2409, 569,
+       2419, 1513,
+       2420, 1513,
+       2421, 1513,
+       2422, 1513,
+       2423, 569,
+       2476, 1372,
+       2754, 569,
+       2755, 569,
+       2756, 569,
+       2757, 569,
+       2764, 1513,
+       2765, 1513,
+       2766, 1513,
+       2767, 1513,
+       2768, 569,
+       2816, 1372,
+       2817, 1372,
+       2818, 1372,
+       2822, 1372,
+       3138, 569,
+       3141, 569,
+       3144, 569,
+       3147, 569,
+       3451, 569,
+       3454, 569,
+       3457, 569,
+       3460, 569,
+       3488, 1372
 };
 static int parser_goto_row47[] = {
-       18,
-       -1, 198,
-       41, 199,
-       160, 332,
-       168, 340,
-       408, 626,
-       409, 627,
-       921, 1075,
-       922, 1076,
-       947, 1095,
-       950, 1097,
-       980, 1123,
-       1066, 1232,
-       1072, 1235,
-       1360, 1511,
-       1361, 1512,
-       1649, 1729,
-       1651, 1730,
-       1653, 1731
+       45,
+       -1, 78,
+       279, 570,
+       1052, 1373,
+       1126, 570,
+       1141, 570,
+       1356, 1373,
+       1360, 1373,
+       1436, 570,
+       1579, 570,
+       1797, 570,
+       1798, 570,
+       1799, 570,
+       1800, 570,
+       1932, 570,
+       1985, 570,
+       2107, 1373,
+       2153, 570,
+       2154, 570,
+       2155, 570,
+       2156, 570,
+       2163, 570,
+       2406, 570,
+       2407, 570,
+       2408, 570,
+       2409, 570,
+       2423, 570,
+       2476, 1373,
+       2754, 570,
+       2755, 570,
+       2756, 570,
+       2757, 570,
+       2768, 570,
+       2816, 1373,
+       2817, 1373,
+       2818, 1373,
+       2822, 1373,
+       3138, 570,
+       3141, 570,
+       3144, 570,
+       3147, 570,
+       3451, 570,
+       3454, 570,
+       3457, 570,
+       3460, 570,
+       3488, 1373
 };
 static int parser_goto_row48[] = {
-       20,
-       -1, 65,
-       213, 435,
-       764, 930,
-       835, 435,
-       914, 930,
-       918, 930,
-       1120, 435,
-       1196, 1371,
-       1238, 930,
-       1412, 930,
-       1431, 435,
-       1515, 435,
-       1535, 930,
-       1536, 930,
-       1537, 930,
-       1541, 930,
-       1554, 435,
-       1678, 1371,
-       1728, 930,
-       1811, 435
+       78,
+       -1, 295,
+       296, 598,
+       309, 607,
+       318, 616,
+       320, 620,
+       322, 625,
+       621, 903,
+       626, 907,
+       629, 910,
+       860, 620,
+       862, 625,
+       887, 1182,
+       911, 1206,
+       1146, 910,
+       1183, 1536,
+       1185, 1538,
+       1187, 1541,
+       1189, 1546,
+       1192, 1554,
+       1455, 1182,
+       1511, 1934,
+       1542, 1953,
+       1547, 1957,
+       1550, 1960,
+       1555, 1966,
+       1557, 1968,
+       1559, 1971,
+       1561, 1976,
+       1737, 620,
+       1744, 625,
+       1813, 1541,
+       1814, 1546,
+       1816, 1554,
+       1935, 2351,
+       1936, 2353,
+       1937, 2355,
+       1940, 2360,
+       1942, 2362,
+       1961, 2375,
+       1972, 2383,
+       1977, 2387,
+       1980, 2390,
+       2123, 910,
+       2170, 1960,
+       2172, 1971,
+       2173, 1976,
+       2356, 2726,
+       2363, 2738,
+       2364, 2740,
+       2391, 2753,
+       2483, 1182,
+       2521, 2390,
+       2727, 3090,
+       2741, 3106,
+       2827, 1541,
+       2829, 1546,
+       2832, 1554,
+       3091, 3422,
+       3092, 3424,
+       3093, 3426,
+       3094, 3429,
+       3096, 3433,
+       3185, 1960,
+       3189, 1971,
+       3191, 1976,
+       3427, 3672,
+       3430, 3676,
+       3431, 3678,
+       3434, 3683,
+       3435, 3685,
+       3436, 3687,
+       3437, 3690,
+       3499, 2390,
+       3679, 3824,
+       3688, 3832,
+       3691, 3836,
+       3692, 3838,
+       3839, 3902
 };
 static int parser_goto_row49[] = {
-       18,
-       -1, 66,
-       213, 436,
-       764, 931,
-       835, 436,
-       914, 931,
-       918, 931,
-       1120, 436,
-       1238, 931,
-       1412, 931,
-       1431, 436,
-       1515, 436,
-       1535, 931,
-       1536, 931,
-       1537, 931,
-       1541, 931,
-       1554, 436,
-       1728, 931,
-       1811, 436
+       46,
+       -1, 79,
+       279, 571,
+       1126, 571,
+       1141, 571,
+       1172, 1514,
+       1436, 571,
+       1579, 571,
+       1586, 1514,
+       1797, 571,
+       1798, 571,
+       1799, 571,
+       1800, 571,
+       1932, 571,
+       1985, 571,
+       2004, 1514,
+       2153, 571,
+       2154, 571,
+       2155, 571,
+       2156, 571,
+       2163, 571,
+       2406, 571,
+       2407, 571,
+       2408, 571,
+       2409, 571,
+       2419, 1514,
+       2420, 1514,
+       2421, 1514,
+       2422, 1514,
+       2423, 571,
+       2754, 571,
+       2755, 571,
+       2756, 571,
+       2757, 571,
+       2764, 1514,
+       2765, 1514,
+       2766, 1514,
+       2767, 1514,
+       2768, 571,
+       3138, 571,
+       3141, 571,
+       3144, 571,
+       3147, 571,
+       3451, 571,
+       3454, 571,
+       3457, 571,
+       3460, 571
 };
 static int parser_goto_row50[] = {
-       52,
-       -1, 229,
-       230, 464,
-       246, 485,
-       255, 494,
-       257, 498,
-       259, 503,
-       499, 704,
-       504, 708,
-       507, 711,
-       642, 498,
-       644, 503,
-       689, 871,
-       712, 890,
-       840, 711,
-       872, 1030,
-       874, 1032,
-       876, 1035,
-       878, 1040,
-       984, 871,
-       1036, 1210,
-       1041, 1214,
-       1044, 1217,
-       1086, 498,
-       1093, 503,
-       1128, 1035,
-       1129, 1040,
-       1218, 1399,
-       1253, 711,
-       1277, 1217,
-       1369, 1517,
-       1419, 871,
-       1518, 1629,
-       1519, 1631,
-       1520, 1633,
-       1522, 1637,
-       1524, 1639,
-       1546, 1035,
-       1548, 1040,
-       1634, 1710,
-       1640, 1721,
-       1641, 1723,
-       1659, 1217,
-       1711, 1787,
-       1724, 1798,
-       1788, 1840,
-       1789, 1842,
-       1790, 1844,
-       1791, 1847,
-       1845, 1885,
-       1848, 1889,
-       1849, 1891,
-       1892, 1913
+       1,
+       -1, 80
 };
 static int parser_goto_row51[] = {
-       10,
-       -1, 67,
-       213, 437,
-       835, 437,
-       1120, 437,
-       1196, 1372,
-       1431, 437,
-       1515, 437,
-       1554, 437,
-       1678, 1372,
-       1811, 437
+       6,
+       -1, 1374,
+       657, 941,
+       949, 1253,
+       1378, 1741,
+       1739, 2117,
+       2850, 3203
 };
 static int parser_goto_row52[] = {
-       1,
-       -1, 68
+       46,
+       -1, 81,
+       279, 572,
+       1126, 572,
+       1141, 572,
+       1172, 1515,
+       1436, 572,
+       1579, 572,
+       1586, 1515,
+       1797, 572,
+       1798, 572,
+       1799, 572,
+       1800, 572,
+       1932, 572,
+       1985, 572,
+       2004, 1515,
+       2153, 572,
+       2154, 572,
+       2155, 572,
+       2156, 572,
+       2163, 572,
+       2406, 572,
+       2407, 572,
+       2408, 572,
+       2409, 572,
+       2419, 1515,
+       2420, 1515,
+       2421, 1515,
+       2422, 1515,
+       2423, 572,
+       2754, 572,
+       2755, 572,
+       2756, 572,
+       2757, 572,
+       2764, 1515,
+       2765, 1515,
+       2766, 1515,
+       2767, 1515,
+       2768, 572,
+       3138, 572,
+       3141, 572,
+       3144, 572,
+       3147, 572,
+       3451, 572,
+       3454, 572,
+       3457, 572,
+       3460, 572
 };
 static int parser_goto_row53[] = {
-       3,
-       -1, 932,
-       936, 1090,
-       1088, 1247
+       46,
+       -1, 82,
+       279, 573,
+       1126, 573,
+       1141, 573,
+       1172, 1516,
+       1436, 573,
+       1579, 573,
+       1586, 1516,
+       1797, 573,
+       1798, 573,
+       1799, 573,
+       1800, 573,
+       1932, 573,
+       1985, 573,
+       2004, 1516,
+       2153, 573,
+       2154, 573,
+       2155, 573,
+       2156, 573,
+       2163, 573,
+       2406, 573,
+       2407, 573,
+       2408, 573,
+       2409, 573,
+       2419, 1516,
+       2420, 1516,
+       2421, 1516,
+       2422, 1516,
+       2423, 573,
+       2754, 573,
+       2755, 573,
+       2756, 573,
+       2757, 573,
+       2764, 1516,
+       2765, 1516,
+       2766, 1516,
+       2767, 1516,
+       2768, 573,
+       3138, 573,
+       3141, 573,
+       3144, 573,
+       3147, 573,
+       3451, 573,
+       3454, 573,
+       3457, 573,
+       3460, 573
 };
 static int parser_goto_row54[] = {
-       10,
-       -1, 69,
-       213, 438,
-       835, 438,
-       1120, 438,
-       1196, 1373,
-       1431, 438,
-       1515, 438,
-       1554, 438,
-       1678, 1373,
-       1811, 438
+       46,
+       -1, 83,
+       279, 574,
+       1126, 574,
+       1141, 574,
+       1172, 1517,
+       1436, 574,
+       1579, 574,
+       1586, 1517,
+       1797, 574,
+       1798, 574,
+       1799, 574,
+       1800, 574,
+       1932, 574,
+       1985, 574,
+       2004, 1517,
+       2153, 574,
+       2154, 574,
+       2155, 574,
+       2156, 574,
+       2163, 574,
+       2406, 574,
+       2407, 574,
+       2408, 574,
+       2409, 574,
+       2419, 1517,
+       2420, 1517,
+       2421, 1517,
+       2422, 1517,
+       2423, 574,
+       2754, 574,
+       2755, 574,
+       2756, 574,
+       2757, 574,
+       2764, 1517,
+       2765, 1517,
+       2766, 1517,
+       2767, 1517,
+       2768, 574,
+       3138, 574,
+       3141, 574,
+       3144, 574,
+       3147, 574,
+       3451, 574,
+       3454, 574,
+       3457, 574,
+       3460, 574
 };
 static int parser_goto_row55[] = {
-       10,
-       -1, 70,
-       213, 439,
-       835, 439,
-       1120, 439,
-       1196, 1374,
-       1431, 439,
-       1515, 439,
-       1554, 439,
-       1678, 1374,
-       1811, 439
+       3,
+       -1, 464,
+       866, 1149,
+       1723, 2105
 };
 static int parser_goto_row56[] = {
-       10,
-       -1, 71,
-       213, 440,
-       835, 440,
-       1120, 440,
-       1196, 1375,
-       1431, 440,
-       1515, 440,
-       1554, 440,
-       1678, 1375,
-       1811, 440
+       2,
+       -1, 465,
+       1393, 1749
 };
 static int parser_goto_row57[] = {
-       3,
-       -1, 343,
-       648, 843,
-       1073, 1236
+       46,
+       -1, 84,
+       279, 575,
+       1126, 575,
+       1141, 575,
+       1172, 1518,
+       1436, 575,
+       1579, 575,
+       1586, 1518,
+       1797, 575,
+       1798, 575,
+       1799, 575,
+       1800, 575,
+       1932, 575,
+       1985, 575,
+       2004, 1518,
+       2153, 575,
+       2154, 575,
+       2155, 575,
+       2156, 575,
+       2163, 575,
+       2406, 575,
+       2407, 575,
+       2408, 575,
+       2409, 575,
+       2419, 1518,
+       2420, 1518,
+       2421, 1518,
+       2422, 1518,
+       2423, 575,
+       2754, 575,
+       2755, 575,
+       2756, 575,
+       2757, 575,
+       2764, 1518,
+       2765, 1518,
+       2766, 1518,
+       2767, 1518,
+       2768, 575,
+       3138, 575,
+       3141, 575,
+       3144, 575,
+       3147, 575,
+       3451, 575,
+       3454, 575,
+       3457, 575,
+       3460, 575
 };
 static int parser_goto_row58[] = {
        2,
-       -1, 344,
-       951, 1098
+       -1, 535,
+       1729, 2108
 };
 static int parser_goto_row59[] = {
-       10,
-       -1, 72,
-       213, 441,
-       835, 441,
-       1120, 441,
-       1196, 1376,
-       1431, 441,
-       1515, 441,
-       1554, 441,
-       1678, 1376,
-       1811, 441
+       46,
+       -1, 85,
+       279, 576,
+       1126, 576,
+       1141, 576,
+       1172, 1519,
+       1436, 576,
+       1579, 576,
+       1586, 1519,
+       1797, 576,
+       1798, 576,
+       1799, 576,
+       1800, 576,
+       1932, 576,
+       1985, 576,
+       2004, 1519,
+       2153, 576,
+       2154, 576,
+       2155, 576,
+       2156, 576,
+       2163, 576,
+       2406, 576,
+       2407, 576,
+       2408, 576,
+       2409, 576,
+       2419, 1519,
+       2420, 1519,
+       2421, 1519,
+       2422, 1519,
+       2423, 576,
+       2754, 576,
+       2755, 576,
+       2756, 576,
+       2757, 576,
+       2764, 1519,
+       2765, 1519,
+       2766, 1519,
+       2767, 1519,
+       2768, 576,
+       3138, 576,
+       3141, 576,
+       3144, 576,
+       3147, 576,
+       3451, 576,
+       3454, 576,
+       3457, 576,
+       3460, 576
 };
 static int parser_goto_row60[] = {
        2,
-       -1, 401,
-       1079, 1239
+       -1, 267,
+       1366, 1727
 };
 static int parser_goto_row61[] = {
-       10,
-       -1, 73,
-       213, 442,
-       835, 442,
-       1120, 442,
-       1196, 1377,
-       1431, 442,
-       1515, 442,
-       1554, 442,
-       1678, 1377,
-       1811, 442
+       182,
+       -1, 577,
+       52, 246,
+       56, 268,
+       64, 278,
+       229, 458,
+       230, 459,
+       267, 514,
+       276, 536,
+       280, 590,
+       283, 595,
+       295, 596,
+       316, 612,
+       372, 667,
+       383, 677,
+       468, 766,
+       541, 841,
+       546, 845,
+       597, 872,
+       598, 873,
+       603, 677,
+       606, 892,
+       607, 893,
+       608, 894,
+       615, 897,
+       616, 898,
+       619, 900,
+       620, 901,
+       624, 904,
+       625, 905,
+       666, 677,
+       836, 1132,
+       847, 595,
+       865, 1148,
+       899, 677,
+       902, 1199,
+       903, 1200,
+       906, 1201,
+       907, 1202,
+       909, 1203,
+       910, 1204,
+       958, 1259,
+       1030, 1313,
+       1144, 900,
+       1145, 904,
+       1152, 1468,
+       1181, 1533,
+       1182, 1534,
+       1205, 1564,
+       1206, 1565,
+       1314, 1674,
+       1362, 1724,
+       1366, 1728,
+       1369, 1731,
+       1394, 1750,
+       1448, 1806,
+       1454, 1811,
+       1463, 1203,
+       1500, 1927,
+       1505, 1931,
+       1535, 1946,
+       1536, 1947,
+       1537, 1948,
+       1538, 1949,
+       1540, 1950,
+       1541, 1951,
+       1545, 1954,
+       1546, 1955,
+       1553, 1963,
+       1554, 1964,
+       1603, 2020,
+       1609, 677,
+       1717, 2102,
+       1719, 2103,
+       1727, 2106,
+       1729, 536,
+       1751, 2124,
+       1807, 2165,
+       1812, 1533,
+       1821, 1468,
+       1933, 2348,
+       1934, 2349,
+       1952, 2368,
+       1953, 2369,
+       1956, 2370,
+       1957, 2371,
+       1959, 2372,
+       1960, 2373,
+       1965, 2376,
+       1966, 2377,
+       1967, 2378,
+       1968, 2379,
+       1970, 2380,
+       1971, 2381,
+       1975, 2384,
+       1976, 2385,
+       2168, 1950,
+       2169, 1954,
+       2171, 1963,
+       2175, 2522,
+       2179, 2525,
+       2350, 2719,
+       2351, 2720,
+       2352, 2721,
+       2353, 2722,
+       2354, 2723,
+       2355, 2724,
+       2359, 2733,
+       2360, 2734,
+       2361, 2735,
+       2362, 2736,
+       2374, 2744,
+       2375, 2745,
+       2382, 2746,
+       2383, 2747,
+       2386, 2748,
+       2387, 2749,
+       2389, 2750,
+       2390, 2751,
+       2481, 2823,
+       2518, 2372,
+       2519, 2380,
+       2520, 2384,
+       2651, 2983,
+       2717, 3085,
+       2725, 3087,
+       2726, 3088,
+       2737, 3101,
+       2738, 3102,
+       2739, 3103,
+       2740, 3104,
+       2752, 3109,
+       2753, 3110,
+       2848, 2750,
+       2915, 3238,
+       3089, 3419,
+       3090, 3420,
+       3105, 3439,
+       3106, 3440,
+       3193, 3500,
+       3351, 3620,
+       3370, 3633,
+       3389, 3646,
+       3408, 3659,
+       3421, 3665,
+       3422, 3666,
+       3423, 3667,
+       3424, 3668,
+       3425, 3669,
+       3426, 3670,
+       3428, 3673,
+       3429, 3674,
+       3432, 3680,
+       3433, 3681,
+       3507, 3726,
+       3545, 3752,
+       3564, 3765,
+       3583, 3778,
+       3602, 3791,
+       3671, 3817,
+       3672, 3818,
+       3675, 3819,
+       3676, 3820,
+       3677, 3821,
+       3678, 3822,
+       3682, 3825,
+       3683, 3826,
+       3684, 3827,
+       3685, 3828,
+       3686, 3829,
+       3687, 3830,
+       3689, 3833,
+       3690, 3834,
+       3823, 3893,
+       3824, 3894,
+       3831, 3895,
+       3832, 3896,
+       3835, 3897,
+       3836, 3898,
+       3837, 3899,
+       3838, 3900,
+       3901, 3921,
+       3902, 3922
 };
 static int parser_goto_row62[] = {
-       2,
-       -1, 201,
-       924, 1077
+       1,
+       -1, 247
 };
 static int parser_goto_row63[] = {
-       133,
-       -1, 443,
-       39, 180,
-       43, 202,
-       51, 212,
-       162, 336,
-       165, 338,
-       201, 388,
-       210, 402,
-       214, 456,
-       217, 461,
-       229, 462,
-       253, 490,
-       279, 514,
-       290, 523,
-       347, 568,
-       407, 625,
-       412, 629,
-       463, 654,
-       464, 655,
-       482, 523,
-       484, 693,
-       485, 694,
-       486, 695,
-       493, 698,
-       494, 699,
-       497, 701,
-       498, 702,
-       502, 705,
-       503, 706,
-       513, 523,
-       620, 827,
-       631, 461,
-       647, 842,
-       700, 523,
-       703, 883,
-       704, 884,
-       707, 885,
-       708, 886,
-       710, 887,
-       711, 888,
-       722, 895,
-       762, 910,
-       838, 701,
-       839, 705,
-       846, 996,
-       870, 1027,
-       871, 1028,
-       889, 1046,
-       890, 1047,
-       911, 1060,
-       920, 1074,
-       924, 1078,
-       927, 1081,
-       952, 1099,
-       977, 1121,
-       983, 1126,
-       991, 887,
-       1029, 1203,
-       1030, 1204,
-       1031, 1205,
-       1032, 1206,
-       1034, 1207,
-       1035, 1208,
-       1039, 1211,
-       1040, 1212,
-       1048, 1220,
-       1053, 523,
-       1067, 1233,
-       1069, 1234,
-       1077, 1237,
-       1079, 402,
-       1100, 1254,
-       1122, 1272,
-       1127, 1027,
-       1132, 996,
-       1209, 1392,
-       1210, 1393,
-       1213, 1394,
-       1214, 1395,
-       1216, 1396,
-       1217, 1397,
-       1275, 1207,
-       1276, 1211,
-       1278, 1439,
-       1281, 1441,
-       1359, 1510,
-       1364, 1514,
-       1398, 1528,
-       1399, 1529,
-       1417, 1542,
-       1438, 1396,
-       1516, 1626,
-       1517, 1627,
-       1628, 1703,
-       1629, 1704,
-       1630, 1705,
-       1631, 1706,
-       1632, 1707,
-       1633, 1708,
-       1636, 1716,
-       1637, 1717,
-       1638, 1718,
-       1639, 1719,
-       1660, 1734,
-       1701, 1782,
-       1709, 1784,
-       1710, 1785,
-       1720, 1793,
-       1721, 1794,
-       1722, 1795,
-       1723, 1796,
-       1736, 1803,
-       1786, 1837,
-       1787, 1838,
-       1797, 1850,
-       1798, 1851,
-       1827, 1872,
-       1839, 1878,
-       1840, 1879,
-       1841, 1880,
-       1842, 1881,
-       1843, 1882,
-       1844, 1883,
-       1846, 1886,
-       1847, 1887,
-       1884, 1906,
-       1885, 1907,
-       1888, 1908,
-       1889, 1909,
-       1890, 1910,
-       1891, 1911,
-       1912, 1922,
-       1913, 1923
+       6,
+       -1, 248,
+       469, 767,
+       779, 1069,
+       781, 1071,
+       782, 1072,
+       1070, 1404
 };
 static int parser_goto_row64[] = {
        1,
-       -1, 181
+       -1, 249
 };
 static int parser_goto_row65[] = {
-       6,
-       -1, 182,
-       348, 569,
-       574, 775,
-       576, 777,
-       577, 778,
-       776, 956
+       8,
+       -1, 250,
+       785, 1075,
+       786, 1076,
+       787, 1077,
+       788, 1078,
+       789, 1079,
+       790, 1080,
+       791, 1081
 };
 static int parser_goto_row66[] = {
-       1,
-       -1, 183
+       2,
+       -1, 251,
+       784, 1074
 };
 static int parser_goto_row67[] = {
-       8,
-       -1, 184,
-       580, 781,
-       581, 782,
-       582, 783,
-       583, 784,
-       584, 785,
-       585, 786,
-       586, 787
+       2,
+       -1, 252,
+       792, 1082
 };
 static int parser_goto_row68[] = {
        2,
-       -1, 185,
-       579, 780
+       -1, 253,
+       793, 1083
 };
 static int parser_goto_row69[] = {
-       2,
-       -1, 186,
-       587, 788
+       3,
+       -1, 254,
+       794, 1084,
+       795, 1085
 };
 static int parser_goto_row70[] = {
-       2,
-       -1, 187,
-       588, 789
+       3,
+       -1, 255,
+       796, 1086,
+       797, 1087
 };
 static int parser_goto_row71[] = {
-       3,
-       -1, 188,
-       589, 790,
-       590, 791
+       5,
+       -1, 256,
+       798, 1088,
+       799, 1089,
+       800, 1090,
+       801, 1091
 };
 static int parser_goto_row72[] = {
-       3,
-       -1, 189,
-       591, 792,
-       592, 793
+       15,
+       -1, 257,
+       179, 384,
+       180, 385,
+       182, 390,
+       241, 474,
+       242, 475,
+       244, 480,
+       375, 670,
+       471, 769,
+       548, 474,
+       549, 475,
+       557, 480,
+       1507, 384,
+       1508, 385,
+       1510, 390
 };
 static int parser_goto_row73[] = {
-       5,
-       -1, 190,
-       593, 794,
-       594, 795,
-       595, 796,
-       596, 797
+       1,
+       -1, 258
 };
 static int parser_goto_row74[] = {
-       15,
-       -1, 191,
-       127, 291,
-       128, 292,
-       129, 293,
-       176, 353,
-       177, 354,
-       178, 355,
-       282, 517,
-       350, 571,
-       414, 353,
-       415, 354,
-       423, 355,
-       1366, 291,
-       1367, 292,
-       1368, 293
+       240,
+       -1, 259,
+       13, 86,
+       27, 86,
+       41, 86,
+       50, 86,
+       110, 86,
+       221, 86,
+       232, 86,
+       240, 472,
+       243, 477,
+       279, 578,
+       304, 86,
+       515, 86,
+       556, 477,
+       602, 86,
+       657, 86,
+       660, 86,
+       737, 86,
+       760, 86,
+       807, 86,
+       810, 86,
+       946, 86,
+       949, 86,
+       1001, 86,
+       1025, 86,
+       1028, 86,
+       1052, 1375,
+       1053, 86,
+       1054, 86,
+       1056, 86,
+       1126, 578,
+       1129, 86,
+       1141, 578,
+       1236, 86,
+       1284, 86,
+       1318, 86,
+       1328, 86,
+       1338, 86,
+       1348, 86,
+       1356, 1375,
+       1358, 86,
+       1360, 1375,
+       1378, 86,
+       1436, 578,
+       1497, 86,
+       1579, 578,
+       1635, 86,
+       1645, 86,
+       1655, 86,
+       1665, 86,
+       1678, 86,
+       1687, 86,
+       1696, 86,
+       1705, 86,
+       1713, 86,
+       1720, 86,
+       1738, 86,
+       1742, 86,
+       1797, 578,
+       1798, 578,
+       1799, 578,
+       1800, 578,
+       1871, 86,
+       1885, 86,
+       1917, 86,
+       1925, 86,
+       1932, 578,
+       1985, 578,
+       2044, 86,
+       2053, 86,
+       2062, 86,
+       2071, 86,
+       2107, 1375,
+       2116, 86,
+       2153, 578,
+       2154, 578,
+       2155, 578,
+       2156, 578,
+       2163, 578,
+       2238, 86,
+       2244, 86,
+       2245, 86,
+       2249, 86,
+       2281, 86,
+       2287, 86,
+       2290, 86,
+       2301, 86,
+       2311, 86,
+       2321, 86,
+       2331, 86,
+       2335, 86,
+       2338, 86,
+       2406, 578,
+       2407, 578,
+       2408, 578,
+       2409, 578,
+       2423, 578,
+       2476, 1375,
+       2478, 86,
+       2577, 86,
+       2583, 86,
+       2584, 86,
+       2590, 86,
+       2591, 86,
+       2593, 86,
+       2604, 86,
+       2614, 86,
+       2624, 86,
+       2634, 86,
+       2638, 86,
+       2641, 86,
+       2652, 86,
+       2655, 86,
+       2659, 86,
+       2665, 86,
+       2669, 86,
+       2673, 86,
+       2679, 86,
+       2683, 86,
+       2687, 86,
+       2693, 86,
+       2697, 86,
+       2701, 86,
+       2707, 86,
+       2713, 86,
+       2754, 578,
+       2755, 578,
+       2756, 578,
+       2757, 578,
+       2768, 578,
+       2816, 1375,
+       2817, 1375,
+       2818, 1375,
+       2822, 1375,
+       2850, 86,
+       2907, 86,
+       2913, 86,
+       2916, 86,
+       2919, 86,
+       2923, 86,
+       2929, 86,
+       2933, 86,
+       2937, 86,
+       2943, 86,
+       2947, 86,
+       2951, 86,
+       2957, 86,
+       2961, 86,
+       2965, 86,
+       2971, 86,
+       2977, 86,
+       2985, 86,
+       2991, 86,
+       2992, 86,
+       2994, 86,
+       2999, 86,
+       3002, 86,
+       3009, 86,
+       3015, 86,
+       3016, 86,
+       3018, 86,
+       3023, 86,
+       3026, 86,
+       3033, 86,
+       3039, 86,
+       3040, 86,
+       3042, 86,
+       3047, 86,
+       3050, 86,
+       3057, 86,
+       3063, 86,
+       3064, 86,
+       3066, 86,
+       3071, 86,
+       3074, 86,
+       3138, 578,
+       3141, 578,
+       3144, 578,
+       3147, 578,
+       3240, 86,
+       3246, 86,
+       3247, 86,
+       3249, 86,
+       3254, 86,
+       3257, 86,
+       3264, 86,
+       3270, 86,
+       3271, 86,
+       3273, 86,
+       3278, 86,
+       3281, 86,
+       3288, 86,
+       3294, 86,
+       3295, 86,
+       3297, 86,
+       3302, 86,
+       3305, 86,
+       3312, 86,
+       3318, 86,
+       3319, 86,
+       3321, 86,
+       3326, 86,
+       3329, 86,
+       3343, 86,
+       3349, 86,
+       3352, 86,
+       3357, 86,
+       3362, 86,
+       3368, 86,
+       3371, 86,
+       3376, 86,
+       3381, 86,
+       3387, 86,
+       3390, 86,
+       3395, 86,
+       3400, 86,
+       3406, 86,
+       3409, 86,
+       3414, 86,
+       3451, 578,
+       3454, 578,
+       3457, 578,
+       3460, 578,
+       3488, 1375,
+       3537, 86,
+       3543, 86,
+       3546, 86,
+       3551, 86,
+       3556, 86,
+       3562, 86,
+       3565, 86,
+       3570, 86,
+       3575, 86,
+       3581, 86,
+       3584, 86,
+       3589, 86,
+       3594, 86,
+       3600, 86,
+       3603, 86,
+       3608, 86
 };
 static int parser_goto_row75[] = {
-       1,
-       -1, 192
+       2,
+       -1, 678,
+       1609, 2026
 };
 static int parser_goto_row76[] = {
-       63,
-       -1, 193,
-       13, 74,
-       27, 74,
-       33, 74,
-       37, 74,
-       98, 74,
-       159, 74,
-       167, 74,
-       175, 351,
-       213, 444,
-       242, 74,
-       389, 74,
-       481, 74,
-       555, 74,
-       562, 74,
-       601, 74,
-       604, 74,
-       757, 74,
-       760, 74,
-       764, 933,
-       765, 74,
-       766, 74,
-       768, 74,
-       824, 74,
-       835, 444,
-       914, 933,
-       916, 74,
-       918, 933,
-       936, 74,
-       1009, 74,
-       1063, 74,
-       1070, 74,
-       1087, 74,
-       1091, 74,
-       1120, 444,
-       1186, 74,
-       1238, 933,
-       1246, 74,
-       1412, 933,
-       1414, 74,
-       1431, 444,
-       1515, 444,
-       1535, 933,
-       1536, 933,
-       1537, 933,
-       1541, 933,
-       1554, 444,
-       1621, 74,
-       1687, 74,
-       1691, 74,
-       1699, 74,
-       1728, 933,
-       1756, 74,
-       1762, 74,
-       1763, 74,
-       1766, 74,
-       1771, 74,
-       1774, 74,
-       1811, 444,
-       1817, 74,
-       1823, 74,
-       1828, 74,
-       1833, 74
+       1,
+       -1, 87
 };
 static int parser_goto_row77[] = {
-       2,
-       -1, 524,
-       1053, 1225
+       32,
+       -1, 88,
+       1466, 1842,
+       1832, 1842,
+       1833, 1842,
+       1834, 1842,
+       1835, 1842,
+       1836, 1842,
+       2180, 1842,
+       2182, 1842,
+       2545, 1842,
+       2547, 1842,
+       2548, 1842,
+       2550, 1842,
+       2551, 1842,
+       2552, 1842,
+       2553, 1842,
+       2554, 1842,
+       2555, 1842,
+       2556, 1842,
+       2557, 1842,
+       2558, 1842,
+       2559, 1842,
+       2560, 1842,
+       2561, 1842,
+       2562, 1842,
+       2563, 1842,
+       2564, 1842,
+       2565, 1842,
+       2566, 1842,
+       2567, 1842,
+       2867, 1842,
+       3928, 1842
 };
 static int parser_goto_row78[] = {
        1,
-       -1, 75
+       -1, 579
 };
 static int parser_goto_row79[] = {
-       31,
-       -1, 76,
-       994, 1151,
-       1142, 1151,
-       1143, 1151,
-       1144, 1151,
-       1145, 1151,
-       1282, 1151,
-       1284, 1151,
-       1454, 1151,
-       1456, 1151,
-       1457, 1151,
-       1459, 1151,
-       1460, 1151,
-       1461, 1151,
-       1462, 1151,
-       1463, 1151,
-       1464, 1151,
-       1465, 1151,
-       1466, 1151,
-       1467, 1151,
-       1468, 1151,
-       1469, 1151,
-       1470, 1151,
-       1471, 1151,
-       1472, 1151,
-       1473, 1151,
-       1474, 1151,
-       1475, 1151,
-       1476, 1151,
-       1568, 1151,
-       1914, 1151
+       2,
+       -1, 852,
+       854, 1143
 };
 static int parser_goto_row80[] = {
        1,
-       -1, 445
+       -1, 591
 };
 static int parser_goto_row81[] = {
        2,
-       -1, 635,
-       637, 837
+       -1, 870,
+       871, 1153
 };
 static int parser_goto_row82[] = {
-       1,
-       -1, 457
+       4,
+       -1, 592,
+       1152, 1469,
+       1821, 2176,
+       2175, 2523
 };
 static int parser_goto_row83[] = {
-       2,
-       -1, 652,
-       653, 847
+       130,
+       -1, 89,
+       39, 188,
+       68, 188,
+       177, 188,
+       181, 188,
+       317, 188,
+       319, 188,
+       320, 188,
+       321, 188,
+       322, 188,
+       373, 188,
+       628, 188,
+       629, 188,
+       688, 188,
+       690, 188,
+       691, 188,
+       693, 188,
+       694, 188,
+       695, 188,
+       696, 188,
+       697, 188,
+       698, 188,
+       699, 188,
+       700, 188,
+       701, 188,
+       702, 188,
+       703, 188,
+       704, 188,
+       705, 188,
+       706, 188,
+       707, 188,
+       708, 188,
+       709, 188,
+       710, 188,
+       885, 188,
+       887, 188,
+       927, 188,
+       968, 188,
+       1172, 188,
+       1186, 188,
+       1187, 188,
+       1188, 188,
+       1189, 188,
+       1191, 188,
+       1192, 188,
+       1212, 188,
+       1355, 188,
+       1370, 188,
+       1466, 1843,
+       1509, 188,
+       1549, 188,
+       1550, 188,
+       1558, 188,
+       1559, 188,
+       1560, 188,
+       1561, 188,
+       1573, 188,
+       1574, 188,
+       1575, 188,
+       1576, 188,
+       1586, 188,
+       1735, 188,
+       1736, 188,
+       1737, 188,
+       1743, 188,
+       1744, 188,
+       1832, 1843,
+       1833, 1843,
+       1834, 1843,
+       1835, 1843,
+       1836, 1843,
+       1979, 188,
+       1980, 188,
+       1981, 188,
+       1982, 188,
+       1983, 188,
+       1984, 188,
+       2004, 188,
+       2122, 188,
+       2123, 188,
+       2180, 1843,
+       2182, 1843,
+       2419, 188,
+       2420, 188,
+       2421, 188,
+       2422, 188,
+       2482, 188,
+       2483, 188,
+       2545, 1843,
+       2547, 1843,
+       2548, 1843,
+       2550, 1843,
+       2551, 1843,
+       2552, 1843,
+       2553, 1843,
+       2554, 1843,
+       2555, 1843,
+       2556, 1843,
+       2557, 1843,
+       2558, 1843,
+       2559, 1843,
+       2560, 1843,
+       2561, 1843,
+       2562, 1843,
+       2563, 1843,
+       2564, 1843,
+       2565, 1843,
+       2566, 1843,
+       2567, 1843,
+       2764, 188,
+       2765, 188,
+       2766, 188,
+       2767, 188,
+       2826, 188,
+       2827, 188,
+       2828, 188,
+       2829, 188,
+       2831, 188,
+       2832, 188,
+       2867, 1843,
+       3153, 188,
+       3184, 188,
+       3185, 188,
+       3188, 188,
+       3189, 188,
+       3190, 188,
+       3191, 188,
+       3498, 188,
+       3499, 188,
+       3928, 1843
 };
 static int parser_goto_row84[] = {
-       4,
-       -1, 458,
-       846, 997,
-       1132, 1279,
-       1278, 1440
+       1,
+       -1, 90
 };
 static int parser_goto_row85[] = {
-       93,
-       -1, 77,
-       31, 135,
-       55, 135,
-       125, 135,
-       254, 135,
-       256, 135,
-       257, 135,
-       258, 135,
-       259, 135,
-       280, 135,
-       506, 135,
-       507, 135,
-       528, 135,
-       530, 135,
-       531, 135,
-       533, 135,
-       534, 135,
-       535, 135,
-       536, 135,
-       537, 135,
-       538, 135,
-       539, 135,
-       540, 135,
-       541, 135,
-       542, 135,
-       543, 135,
-       544, 135,
-       545, 135,
-       546, 135,
-       547, 135,
-       548, 135,
-       549, 135,
-       550, 135,
-       687, 135,
-       689, 135,
-       727, 135,
-       875, 135,
-       876, 135,
-       877, 135,
-       878, 135,
-       913, 135,
-       928, 135,
-       994, 1152,
-       1043, 135,
-       1044, 135,
-       1084, 135,
-       1085, 135,
-       1086, 135,
-       1092, 135,
-       1093, 135,
-       1116, 135,
-       1142, 1152,
-       1143, 1152,
-       1144, 1152,
-       1145, 1152,
-       1196, 135,
-       1252, 135,
-       1253, 135,
-       1282, 1152,
-       1284, 1152,
-       1418, 135,
-       1419, 135,
-       1454, 1152,
-       1456, 1152,
-       1457, 1152,
-       1459, 1152,
-       1460, 1152,
-       1461, 1152,
-       1462, 1152,
-       1463, 1152,
-       1464, 1152,
-       1465, 1152,
-       1466, 1152,
-       1467, 1152,
-       1468, 1152,
-       1469, 1152,
-       1470, 1152,
-       1471, 1152,
-       1472, 1152,
-       1473, 1152,
-       1474, 1152,
-       1475, 1152,
-       1476, 1152,
-       1545, 135,
-       1546, 135,
-       1547, 135,
-       1548, 135,
-       1568, 1152,
-       1644, 135,
-       1658, 135,
-       1659, 135,
-       1678, 135,
-       1914, 1152
+       1,
+       -1, 91
 };
 static int parser_goto_row86[] = {
-       1,
-       -1, 78
+       2,
+       -1, 312,
+       315, 610
 };
 static int parser_goto_row87[] = {
        1,
-       -1, 79
+       -1, 313
 };
 static int parser_goto_row88[] = {
        2,
-       -1, 249,
-       252, 488
+       -1, 314,
+       315, 611
 };
 static int parser_goto_row89[] = {
-       1,
-       -1, 250
+       61,
+       -1, 271,
+       223, 441,
+       279, 580,
+       534, 833,
+       652, 932,
+       1126, 580,
+       1141, 580,
+       1172, 1520,
+       1436, 580,
+       1470, 1864,
+       1579, 580,
+       1586, 2010,
+       1797, 580,
+       1798, 580,
+       1799, 580,
+       1800, 580,
+       1932, 580,
+       1985, 580,
+       2004, 2416,
+       2153, 580,
+       2154, 580,
+       2155, 580,
+       2156, 580,
+       2163, 580,
+       2406, 580,
+       2407, 580,
+       2408, 580,
+       2409, 580,
+       2419, 2772,
+       2420, 2776,
+       2421, 2780,
+       2422, 2784,
+       2423, 580,
+       2718, 3086,
+       2754, 580,
+       2755, 580,
+       2756, 580,
+       2757, 580,
+       2764, 3122,
+       2765, 3126,
+       2766, 3130,
+       2767, 3134,
+       2768, 580,
+       3138, 580,
+       3141, 580,
+       3144, 580,
+       3147, 580,
+       3150, 3468,
+       3451, 580,
+       3454, 580,
+       3457, 580,
+       3460, 580,
+       3463, 3706,
+       3708, 3849,
+       3709, 3851,
+       3710, 3853,
+       3711, 3855,
+       3844, 3903,
+       3845, 3905,
+       3846, 3907,
+       3847, 3909
 };
 static int parser_goto_row90[] = {
-       2,
-       -1, 251,
-       252, 489
+       78,
+       -1, 272,
+       59, 273,
+       60, 274,
+       61, 275,
+       69, 298,
+       70, 299,
+       71, 300,
+       73, 301,
+       173, 376,
+       174, 377,
+       175, 378,
+       176, 379,
+       184, 392,
+       185, 393,
+       186, 394,
+       187, 395,
+       314, 609,
+       533, 831,
+       540, 840,
+       611, 895,
+       652, 933,
+       824, 1120,
+       835, 1131,
+       927, 1221,
+       1121, 1438,
+       1122, 1440,
+       1123, 1442,
+       1124, 1444,
+       1140, 1460,
+       1142, 1462,
+       1151, 1467,
+       1212, 1571,
+       1432, 1789,
+       1433, 1791,
+       1434, 1793,
+       1435, 1795,
+       1573, 1987,
+       1574, 1990,
+       1575, 1993,
+       1576, 1996,
+       1828, 2183,
+       1829, 2184,
+       1830, 2185,
+       1831, 2186,
+       1838, 2198,
+       1839, 2199,
+       1840, 2200,
+       1841, 2201,
+       1981, 2394,
+       1982, 2397,
+       1983, 2400,
+       1984, 2403,
+       2162, 2514,
+       2167, 2517,
+       2509, 2842,
+       2516, 2847,
+       2543, 2864,
+       2544, 2865,
+       2763, 3120,
+       2843, 3198,
+       2844, 3199,
+       2845, 3200,
+       2846, 3201,
+       2871, 3216,
+       3115, 3446,
+       3194, 3501,
+       3195, 3502,
+       3196, 3503,
+       3197, 3504,
+       3215, 3520,
+       3447, 3698,
+       3448, 3699,
+       3449, 3700,
+       3450, 3701,
+       3694, 3840,
+       3695, 3841,
+       3696, 3842,
+       3697, 3843
 };
 static int parser_goto_row91[] = {
-       16,
-       -1, 205,
-       161, 335,
-       213, 446,
-       400, 617,
-       835, 446,
-       1120, 446,
-       1178, 1334,
-       1196, 1378,
-       1354, 1498,
-       1431, 446,
-       1515, 446,
-       1554, 446,
-       1678, 1748,
-       1702, 1783,
-       1811, 446,
-       1897, 1917
+       1,
+       -1, 532
 };
 static int parser_goto_row92[] = {
-       42,
-       -1, 206,
-       46, 207,
-       47, 208,
-       48, 209,
-       56, 232,
-       57, 233,
-       58, 234,
-       60, 235,
-       121, 283,
-       122, 284,
-       123, 285,
-       124, 286,
-       131, 295,
-       132, 296,
-       133, 297,
-       134, 298,
-       251, 487,
-       406, 624,
-       489, 696,
-       619, 826,
-       821, 976,
-       834, 988,
-       836, 990,
-       845, 995,
-       1116, 1266,
-       1138, 1285,
-       1139, 1286,
-       1140, 1287,
-       1141, 1288,
-       1147, 1296,
-       1148, 1297,
-       1149, 1298,
-       1150, 1299,
-       1178, 1335,
-       1274, 1437,
-       1436, 1556,
-       1452, 1565,
-       1453, 1566,
-       1553, 1662,
-       1572, 1670,
-       1669, 1741,
-       1735, 1802
+       6,
+       -1, 925,
+       659, 943,
+       829, 1125,
+       1427, 1783,
+       1496, 1922,
+       2289, 2648
 };
 static int parser_goto_row93[] = {
-       1,
-       -1, 399
+       2,
+       -1, 926,
+       1577, 1998
 };
 static int parser_goto_row94[] = {
-       6,
-       -1, 816,
-       965, 1110,
-       999, 1174,
-       1008, 1183,
-       1620, 1696,
-       1765, 1824
+       10,
+       -1, 1222,
+       1212, 1572,
+       1573, 1988,
+       1574, 1991,
+       1575, 1994,
+       1576, 1997,
+       1981, 2395,
+       1982, 2398,
+       1983, 2401,
+       1984, 2404
 };
 static int parser_goto_row95[] = {
        2,
-       -1, 817,
-       1118, 1269
+       -1, 1218,
+       1219, 1578
 };
 static int parser_goto_row96[] = {
-       1,
-       -1, 1267
+       2,
+       -1, 1225,
+       1228, 1587
 };
 static int parser_goto_row97[] = {
-       2,
-       -1, 973,
-       974, 1119
+       1,
+       -1, 880
 };
 static int parser_goto_row98[] = {
-       5,
-       -1, 1330,
-       1332, 1482,
-       1349, 1482,
-       1778, 1482,
-       1870, 1482
+       31,
+       -1, 1446,
+       1436, 1796,
+       1579, 1999,
+       1797, 2158,
+       1798, 2159,
+       1799, 2160,
+       1800, 2161,
+       1932, 2347,
+       1985, 2405,
+       2153, 2505,
+       2154, 2506,
+       2155, 2507,
+       2156, 2508,
+       2406, 2759,
+       2407, 2760,
+       2408, 2761,
+       2409, 2762,
+       2423, 2787,
+       2754, 3111,
+       2755, 3112,
+       2756, 3113,
+       2757, 3114,
+       2768, 3137,
+       3138, 3464,
+       3141, 3465,
+       3144, 3466,
+       3147, 3467,
+       3451, 3702,
+       3454, 3703,
+       3457, 3704,
+       3460, 3705
 };
 static int parser_goto_row99[] = {
-       1,
-       -1, 1021
+       3,
+       -1, 1804,
+       1805, 2164,
+       1941, 2164
 };
 static int parser_goto_row100[] = {
        4,
-       -1, 1270,
-       1431, 1552,
-       1515, 1625,
-       1811, 1859
+       -1, 1447,
+       279, 581,
+       1141, 1461,
+       2163, 2515
 };
 static int parser_goto_row101[] = {
-       3,
-       -1, 1434,
-       1435, 1555,
-       1523, 1555
+       40,
+       -1, 927,
+       270, 533,
+       524, 824,
+       813, 1111,
+       825, 1121,
+       826, 1122,
+       827, 1123,
+       828, 1124,
+       920, 1212,
+       1105, 1422,
+       1115, 1432,
+       1116, 1433,
+       1117, 1434,
+       1118, 1435,
+       1213, 1573,
+       1214, 1574,
+       1215, 1575,
+       1216, 1576,
+       1227, 1586,
+       1423, 1779,
+       1424, 1780,
+       1425, 1781,
+       1426, 1782,
+       1566, 1981,
+       1567, 1982,
+       1568, 1983,
+       1569, 1984,
+       1581, 2004,
+       1774, 2141,
+       1775, 2142,
+       1776, 2143,
+       1777, 2144,
+       2005, 2419,
+       2006, 2420,
+       2007, 2421,
+       2008, 2422,
+       2411, 2764,
+       2412, 2765,
+       2413, 2766,
+       2414, 2767
 };
 static int parser_goto_row102[] = {
-       4,
-       -1, 1271,
-       213, 447,
-       835, 989,
-       1554, 1663
+       155,
+       -1, 481,
+       39, 189,
+       68, 296,
+       168, 371,
+       183, 391,
+       235, 189,
+       317, 613,
+       320, 621,
+       322, 626,
+       386, 680,
+       396, 686,
+       398, 687,
+       424, 713,
+       476, 773,
+       507, 613,
+       509, 804,
+       510, 805,
+       567, 296,
+       629, 911,
+       669, 954,
+       681, 962,
+       684, 965,
+       714, 997,
+       768, 1061,
+       776, 1066,
+       777, 1067,
+       806, 1098,
+       860, 621,
+       862, 626,
+       885, 1178,
+       887, 1183,
+       966, 1267,
+       990, 1269,
+       992, 1271,
+       1068, 1403,
+       1092, 1178,
+       1093, 1405,
+       1146, 911,
+       1187, 1542,
+       1189, 1547,
+       1191, 1551,
+       1192, 1555,
+       1263, 1611,
+       1273, 1620,
+       1274, 1621,
+       1276, 1623,
+       1277, 1624,
+       1355, 189,
+       1370, 296,
+       1399, 1754,
+       1407, 1761,
+       1408, 1762,
+       1410, 1551,
+       1411, 1764,
+       1429, 1784,
+       1455, 1183,
+       1511, 1935,
+       1550, 1961,
+       1559, 1972,
+       1561, 1977,
+       1604, 2021,
+       1612, 2027,
+       1613, 2028,
+       1615, 2030,
+       1622, 2036,
+       1626, 2037,
+       1627, 2038,
+       1735, 613,
+       1737, 621,
+       1744, 626,
+       1755, 2126,
+       1756, 2127,
+       1758, 2129,
+       1763, 2133,
+       1766, 2134,
+       1767, 2135,
+       1785, 2150,
+       1786, 2151,
+       1813, 1542,
+       1814, 1547,
+       1816, 1555,
+       1823, 2178,
+       1837, 2197,
+       1937, 2356,
+       1942, 2363,
+       1980, 2391,
+       2022, 2430,
+       2023, 2431,
+       2029, 2434,
+       2031, 2435,
+       2032, 2436,
+       2039, 2441,
+       2123, 911,
+       2128, 2491,
+       2130, 2492,
+       2131, 2493,
+       2136, 2495,
+       2152, 2504,
+       2170, 1961,
+       2172, 1972,
+       2173, 1977,
+       2192, 2535,
+       2202, 2541,
+       2204, 2542,
+       2230, 2570,
+       2364, 2741,
+       2432, 2793,
+       2437, 2794,
+       2482, 1178,
+       2483, 1183,
+       2494, 2836,
+       2521, 2391,
+       2529, 2855,
+       2536, 2859,
+       2539, 2862,
+       2571, 2898,
+       2727, 3091,
+       2827, 1542,
+       2829, 1547,
+       2831, 1551,
+       2832, 1555,
+       2863, 3213,
+       2891, 3217,
+       2893, 3219,
+       3093, 3427,
+       3094, 3430,
+       3096, 3434,
+       3185, 1961,
+       3189, 1972,
+       3191, 1977,
+       3209, 3513,
+       3221, 3523,
+       3222, 3524,
+       3224, 3526,
+       3225, 3527,
+       3431, 3679,
+       3436, 3688,
+       3437, 3691,
+       3499, 2391,
+       3508, 3727,
+       3514, 3732,
+       3515, 3733,
+       3517, 3735,
+       3525, 3741,
+       3529, 3742,
+       3530, 3743,
+       3692, 3839,
+       3728, 3862,
+       3729, 3863,
+       3734, 3865,
+       3736, 3866,
+       3737, 3867,
+       3744, 3872,
+       3864, 3917,
+       3868, 3918
 };
 static int parser_goto_row103[] = {
-       4,
-       -1, 821,
-       966, 1111,
-       970, 1116,
-       1599, 1678
+       50,
+       -1, 190,
+       68, 297,
+       317, 614,
+       319, 618,
+       320, 622,
+       321, 623,
+       322, 627,
+       628, 908,
+       629, 912,
+       885, 1179,
+       887, 1184,
+       1186, 1539,
+       1187, 1543,
+       1188, 1544,
+       1189, 1548,
+       1191, 1552,
+       1192, 1556,
+       1355, 1711,
+       1370, 1732,
+       1549, 1958,
+       1550, 1962,
+       1558, 1969,
+       1559, 1973,
+       1560, 1974,
+       1561, 1978,
+       1735, 2112,
+       1736, 2113,
+       1737, 2114,
+       1743, 2120,
+       1744, 2121,
+       1979, 2388,
+       1980, 2392,
+       2122, 2488,
+       2123, 2489,
+       2482, 2824,
+       2483, 2825,
+       2826, 3180,
+       2827, 3181,
+       2828, 3182,
+       2829, 3183,
+       2831, 3186,
+       2832, 3187,
+       3184, 3492,
+       3185, 3493,
+       3188, 3494,
+       3189, 3495,
+       3190, 3496,
+       3191, 3497,
+       3498, 3722,
+       3499, 3723
 };
 static int parser_goto_row104[] = {
-       86,
-       -1, 356,
-       31, 136,
-       55, 230,
-       116, 278,
-       130, 294,
-       170, 136,
-       254, 491,
-       257, 499,
-       259, 504,
-       299, 526,
-       301, 527,
-       326, 552,
-       381, 491,
-       383, 598,
-       384, 599,
-       433, 230,
-       507, 712,
-       516, 719,
-       553, 755,
-       570, 773,
-       600, 803,
-       642, 499,
-       644, 504,
-       687, 867,
-       689, 872,
-       749, 900,
-       751, 902,
-       798, 867,
-       799, 957,
-       840, 712,
-       876, 1036,
-       878, 1041,
-       904, 1057,
-       905, 1058,
-       913, 136,
-       928, 230,
-       959, 1102,
-       960, 1103,
-       967, 1112,
-       984, 872,
-       1044, 1218,
-       1049, 1221,
-       1059, 1228,
-       1084, 491,
-       1086, 499,
-       1093, 504,
-       1104, 1255,
-       1113, 1262,
-       1114, 1263,
-       1128, 1036,
-       1129, 1041,
-       1133, 1280,
-       1146, 1295,
-       1222, 1401,
-       1223, 1402,
-       1253, 712,
-       1264, 1430,
-       1277, 1218,
-       1300, 1450,
-       1302, 1451,
-       1327, 1478,
-       1369, 1518,
-       1403, 1531,
-       1418, 867,
-       1419, 872,
-       1445, 1562,
-       1479, 1598,
-       1520, 1634,
-       1524, 1640,
-       1546, 1036,
-       1548, 1041,
-       1592, 1671,
-       1594, 1673,
-       1641, 1724,
-       1659, 1218,
-       1675, 1744,
-       1676, 1745,
-       1711, 1788,
-       1737, 1804,
-       1746, 1810,
-       1790, 1845,
-       1791, 1848,
-       1805, 1853,
-       1806, 1854,
-       1849, 1892,
-       1855, 1894
+       8,
+       -1, 423,
+       86, 309,
+       259, 506,
+       472, 506,
+       477, 506,
+       578, 309,
+       1375, 309,
+       1526, 1940
 };
 static int parser_goto_row105[] = {
-       34,
-       -1, 137,
-       55, 231,
-       254, 492,
-       256, 496,
-       257, 500,
-       258, 501,
-       259, 505,
-       506, 709,
-       507, 713,
-       687, 868,
-       689, 873,
-       875, 1033,
-       876, 1037,
-       877, 1038,
-       878, 1042,
-       913, 1061,
-       928, 1082,
-       1043, 1215,
-       1044, 1219,
-       1084, 1242,
-       1085, 1243,
-       1086, 1244,
-       1092, 1250,
-       1093, 1251,
-       1252, 1423,
-       1253, 1424,
-       1418, 1543,
-       1419, 1544,
-       1545, 1654,
-       1546, 1655,
-       1547, 1656,
-       1548, 1657,
-       1658, 1732,
-       1659, 1733
+       4,
+       -1, 679,
+       603, 884,
+       666, 951,
+       899, 1198
 };
 static int parser_goto_row106[] = {
-       6,
-       -1, 246,
-       153, 325,
-       193, 380,
-       289, 325,
-       351, 380,
-       1384, 1522
+       2,
+       -1, 1261,
+       1262, 1610
 };
 static int parser_goto_row107[] = {
-       4,
-       -1, 525,
-       482, 686,
-       513, 716,
-       700, 882
+       1,
+       -1, 466
 };
 static int parser_goto_row108[] = {
        2,
-       -1, 897,
-       898, 1054
+       -1, 467,
+       762, 1055
 };
 static int parser_goto_row109[] = {
-       1,
-       -1, 345
+       20,
+       -1, 353,
+       135, 357,
+       426, 715,
+       427, 717,
+       742, 1032,
+       743, 1034,
+       746, 1037,
+       747, 1039,
+       750, 1042,
+       751, 1044,
+       754, 1047,
+       755, 1049,
+       1005, 1287,
+       1006, 1289,
+       1009, 1292,
+       1010, 1294,
+       1013, 1297,
+       1014, 1299,
+       1017, 1302,
+       1018, 1304
 };
 static int parser_goto_row110[] = {
-       2,
-       -1, 346,
-       564, 767
+       383,
+       -1, 260,
+       13, 92,
+       27, 92,
+       39, 191,
+       41, 92,
+       50, 92,
+       68, 191,
+       110, 92,
+       177, 381,
+       181, 191,
+       221, 92,
+       232, 92,
+       240, 473,
+       279, 582,
+       304, 92,
+       317, 191,
+       319, 191,
+       320, 191,
+       321, 191,
+       322, 191,
+       373, 191,
+       515, 92,
+       602, 92,
+       604, 888,
+       628, 191,
+       629, 191,
+       657, 92,
+       660, 92,
+       688, 191,
+       690, 191,
+       691, 191,
+       693, 191,
+       694, 191,
+       695, 191,
+       696, 191,
+       697, 191,
+       698, 191,
+       699, 191,
+       700, 191,
+       701, 191,
+       702, 191,
+       703, 191,
+       704, 191,
+       705, 191,
+       706, 191,
+       707, 191,
+       708, 191,
+       709, 191,
+       710, 191,
+       711, 993,
+       737, 92,
+       760, 92,
+       802, 1094,
+       807, 92,
+       810, 92,
+       885, 191,
+       887, 191,
+       891, 1193,
+       946, 92,
+       949, 92,
+       956, 1257,
+       963, 993,
+       968, 191,
+       996, 1278,
+       1001, 92,
+       1025, 92,
+       1028, 92,
+       1052, 1376,
+       1053, 92,
+       1054, 92,
+       1056, 92,
+       1062, 1397,
+       1064, 1094,
+       1097, 1412,
+       1126, 582,
+       1129, 92,
+       1138, 888,
+       1141, 582,
+       1172, 1521,
+       1186, 191,
+       1187, 191,
+       1188, 191,
+       1189, 191,
+       1191, 191,
+       1192, 191,
+       1236, 92,
+       1258, 1608,
+       1266, 1278,
+       1284, 92,
+       1318, 92,
+       1328, 92,
+       1338, 92,
+       1348, 92,
+       1355, 191,
+       1356, 1376,
+       1358, 92,
+       1360, 1376,
+       1370, 191,
+       1378, 92,
+       1398, 1753,
+       1402, 1412,
+       1436, 582,
+       1459, 1193,
+       1466, 1844,
+       1497, 92,
+       1509, 191,
+       1549, 191,
+       1550, 191,
+       1558, 191,
+       1559, 191,
+       1560, 191,
+       1561, 191,
+       1579, 582,
+       1586, 1521,
+       1635, 92,
+       1645, 92,
+       1655, 92,
+       1665, 92,
+       1678, 92,
+       1687, 92,
+       1696, 92,
+       1705, 92,
+       1713, 92,
+       1720, 92,
+       1735, 191,
+       1736, 191,
+       1737, 191,
+       1738, 92,
+       1742, 92,
+       1743, 191,
+       1744, 191,
+       1797, 582,
+       1798, 582,
+       1799, 582,
+       1800, 582,
+       1832, 2188,
+       1833, 1844,
+       1834, 1844,
+       1835, 1844,
+       1836, 1844,
+       1871, 92,
+       1885, 92,
+       1917, 92,
+       1925, 92,
+       1932, 582,
+       1979, 191,
+       1980, 191,
+       1985, 582,
+       2004, 1521,
+       2044, 92,
+       2053, 92,
+       2062, 92,
+       2071, 92,
+       2107, 1376,
+       2110, 888,
+       2116, 92,
+       2122, 191,
+       2123, 191,
+       2153, 582,
+       2154, 582,
+       2155, 582,
+       2156, 582,
+       2163, 582,
+       2180, 1844,
+       2182, 1844,
+       2238, 92,
+       2244, 92,
+       2245, 92,
+       2249, 92,
+       2281, 92,
+       2287, 92,
+       2290, 92,
+       2301, 92,
+       2311, 92,
+       2321, 92,
+       2331, 92,
+       2335, 92,
+       2338, 92,
+       2357, 2728,
+       2406, 582,
+       2407, 582,
+       2408, 582,
+       2409, 582,
+       2419, 1521,
+       2420, 1521,
+       2421, 1521,
+       2422, 1521,
+       2423, 582,
+       2476, 1376,
+       2478, 92,
+       2482, 191,
+       2483, 191,
+       2486, 1193,
+       2545, 1844,
+       2547, 1844,
+       2548, 1844,
+       2550, 1844,
+       2551, 1844,
+       2552, 1844,
+       2553, 1844,
+       2554, 1844,
+       2555, 1844,
+       2556, 1844,
+       2557, 1844,
+       2558, 1844,
+       2559, 1844,
+       2560, 1844,
+       2561, 1844,
+       2562, 1844,
+       2563, 1844,
+       2564, 1844,
+       2565, 1844,
+       2566, 1844,
+       2567, 1844,
+       2568, 2894,
+       2577, 92,
+       2583, 92,
+       2584, 92,
+       2590, 92,
+       2591, 92,
+       2593, 92,
+       2604, 92,
+       2614, 92,
+       2624, 92,
+       2634, 92,
+       2638, 92,
+       2641, 92,
+       2652, 92,
+       2655, 92,
+       2659, 92,
+       2665, 92,
+       2669, 92,
+       2673, 92,
+       2679, 92,
+       2683, 92,
+       2687, 92,
+       2693, 92,
+       2697, 92,
+       2701, 92,
+       2707, 92,
+       2713, 92,
+       2732, 3097,
+       2754, 582,
+       2755, 582,
+       2756, 582,
+       2757, 582,
+       2764, 1521,
+       2765, 1521,
+       2766, 1521,
+       2767, 1521,
+       2768, 582,
+       2816, 1376,
+       2817, 1376,
+       2818, 1376,
+       2822, 1376,
+       2826, 191,
+       2827, 191,
+       2828, 191,
+       2829, 191,
+       2831, 191,
+       2832, 191,
+       2850, 92,
+       2857, 3207,
+       2860, 2894,
+       2867, 1844,
+       2897, 3226,
+       2907, 92,
+       2913, 92,
+       2916, 92,
+       2919, 92,
+       2923, 92,
+       2929, 92,
+       2933, 92,
+       2937, 92,
+       2943, 92,
+       2947, 92,
+       2951, 92,
+       2957, 92,
+       2961, 92,
+       2965, 92,
+       2971, 92,
+       2977, 92,
+       2985, 92,
+       2991, 92,
+       2992, 92,
+       2994, 92,
+       2999, 92,
+       3002, 92,
+       3009, 92,
+       3015, 92,
+       3016, 92,
+       3018, 92,
+       3023, 92,
+       3026, 92,
+       3033, 92,
+       3039, 92,
+       3040, 92,
+       3042, 92,
+       3047, 92,
+       3050, 92,
+       3057, 92,
+       3063, 92,
+       3064, 92,
+       3066, 92,
+       3071, 92,
+       3074, 92,
+       3138, 582,
+       3141, 582,
+       3144, 582,
+       3147, 582,
+       3153, 191,
+       3184, 191,
+       3185, 191,
+       3188, 191,
+       3189, 191,
+       3190, 191,
+       3191, 191,
+       3208, 3512,
+       3212, 3226,
+       3240, 92,
+       3246, 92,
+       3247, 92,
+       3249, 92,
+       3254, 92,
+       3257, 92,
+       3264, 92,
+       3270, 92,
+       3271, 92,
+       3273, 92,
+       3278, 92,
+       3281, 92,
+       3288, 92,
+       3294, 92,
+       3295, 92,
+       3297, 92,
+       3302, 92,
+       3305, 92,
+       3312, 92,
+       3318, 92,
+       3319, 92,
+       3321, 92,
+       3326, 92,
+       3329, 92,
+       3343, 92,
+       3349, 92,
+       3352, 92,
+       3357, 92,
+       3362, 92,
+       3368, 92,
+       3371, 92,
+       3376, 92,
+       3381, 92,
+       3387, 92,
+       3390, 92,
+       3395, 92,
+       3400, 92,
+       3406, 92,
+       3409, 92,
+       3414, 92,
+       3451, 582,
+       3454, 582,
+       3457, 582,
+       3460, 582,
+       3488, 1376,
+       3498, 191,
+       3499, 191,
+       3537, 92,
+       3543, 92,
+       3546, 92,
+       3551, 92,
+       3556, 92,
+       3562, 92,
+       3565, 92,
+       3570, 92,
+       3575, 92,
+       3581, 92,
+       3584, 92,
+       3589, 92,
+       3594, 92,
+       3600, 92,
+       3603, 92,
+       3608, 92,
+       3928, 1844
 };
 static int parser_goto_row111[] = {
-       2,
-       -1, 850,
-       657, 853
+       34,
+       -1, 540,
+       269, 519,
+       302, 599,
+       374, 519,
+       433, 735,
+       470, 519,
+       516, 811,
+       537, 835,
+       671, 519,
+       745, 1036,
+       749, 1041,
+       753, 1046,
+       757, 1051,
+       1008, 1291,
+       1012, 1296,
+       1016, 1301,
+       1020, 1306,
+       1160, 1475,
+       1479, 1875,
+       1890, 2295,
+       1897, 2305,
+       1904, 2315,
+       1911, 2325,
+       2181, 2528,
+       2254, 2598,
+       2261, 2608,
+       2268, 2618,
+       2275, 2628,
+       2527, 2852,
+       2531, 2528,
+       2549, 2871,
+       2789, 835,
+       2870, 3215,
+       3472, 835
 };
 static int parser_goto_row112[] = {
-       164,
-       -1, 194,
-       13, 80,
-       27, 80,
-       31, 138,
-       33, 80,
-       37, 80,
-       55, 138,
-       98, 80,
-       125, 288,
-       159, 80,
-       167, 80,
-       175, 352,
-       213, 448,
-       242, 80,
-       254, 138,
-       256, 138,
-       257, 138,
-       258, 138,
-       259, 138,
-       280, 138,
-       389, 80,
-       481, 80,
-       483, 690,
-       506, 138,
-       507, 138,
-       528, 138,
-       530, 138,
-       531, 138,
-       533, 138,
-       534, 138,
-       535, 138,
-       536, 138,
-       537, 138,
-       538, 138,
-       539, 138,
-       540, 138,
-       541, 138,
-       542, 138,
-       543, 138,
-       544, 138,
-       545, 138,
-       546, 138,
-       547, 138,
-       548, 138,
-       549, 138,
-       550, 138,
-       551, 752,
-       555, 80,
-       562, 80,
-       597, 800,
-       601, 80,
-       604, 80,
-       687, 138,
-       689, 138,
-       721, 894,
-       727, 138,
-       757, 80,
-       760, 80,
-       764, 934,
-       765, 80,
-       766, 80,
-       768, 80,
-       774, 955,
-       824, 80,
-       833, 690,
-       835, 448,
-       875, 138,
-       876, 138,
-       877, 138,
-       878, 138,
-       913, 138,
-       914, 934,
-       916, 80,
-       918, 934,
-       928, 138,
-       936, 80,
-       994, 1153,
-       1009, 80,
-       1043, 138,
-       1044, 138,
-       1063, 80,
-       1070, 80,
-       1084, 138,
-       1085, 138,
-       1086, 138,
-       1087, 80,
-       1091, 80,
-       1092, 138,
-       1093, 138,
-       1120, 448,
-       1142, 1290,
-       1143, 1153,
-       1144, 1153,
-       1145, 1153,
-       1186, 80,
-       1196, 1379,
-       1238, 934,
-       1241, 690,
-       1246, 80,
-       1252, 138,
-       1253, 138,
-       1282, 1153,
-       1284, 1153,
-       1412, 934,
-       1414, 80,
-       1418, 138,
-       1419, 138,
-       1431, 448,
-       1454, 1153,
-       1456, 1153,
-       1457, 1153,
-       1459, 1153,
-       1460, 1153,
-       1461, 1153,
-       1462, 1153,
-       1463, 1153,
-       1464, 1153,
-       1465, 1153,
-       1466, 1153,
-       1467, 1153,
-       1468, 1153,
-       1469, 1153,
-       1470, 1153,
-       1471, 1153,
-       1472, 1153,
-       1473, 1153,
-       1474, 1153,
-       1475, 1153,
-       1476, 1153,
-       1477, 1595,
-       1515, 448,
-       1535, 934,
-       1536, 934,
-       1537, 934,
-       1541, 934,
-       1545, 138,
-       1546, 138,
-       1547, 138,
-       1548, 138,
-       1554, 448,
-       1564, 1667,
-       1568, 1153,
-       1621, 80,
-       1635, 1712,
-       1644, 138,
-       1658, 138,
-       1659, 138,
-       1678, 1379,
-       1687, 80,
-       1691, 80,
-       1699, 80,
-       1728, 934,
-       1756, 80,
-       1762, 80,
-       1763, 80,
-       1766, 80,
-       1771, 80,
-       1774, 80,
-       1811, 448,
-       1817, 80,
-       1823, 80,
-       1828, 80,
-       1833, 80,
-       1914, 1153
+       42,
+       -1, 1244,
+       38, 163,
+       211, 428,
+       444, 744,
+       448, 748,
+       452, 752,
+       456, 756,
+       721, 1007,
+       725, 1011,
+       729, 1015,
+       733, 1019,
+       1159, 1474,
+       1161, 1477,
+       1168, 1495,
+       1478, 1874,
+       1480, 1877,
+       1486, 1884,
+       1597, 2017,
+       1889, 2294,
+       1891, 2297,
+       1893, 2300,
+       1896, 2304,
+       1898, 2307,
+       1900, 2310,
+       1903, 2314,
+       1905, 2317,
+       1907, 2320,
+       1910, 2324,
+       1912, 2327,
+       1914, 2330,
+       2253, 2597,
+       2255, 2600,
+       2257, 2603,
+       2260, 2607,
+       2262, 2610,
+       2264, 2613,
+       2267, 2617,
+       2269, 2620,
+       2271, 2623,
+       2274, 2627,
+       2276, 2630,
+       2278, 2633
 };
 static int parser_goto_row113[] = {
-       16,
-       -1, 406,
-       203, 393,
-       281, 393,
-       349, 393,
-       390, 605,
-       403, 619,
-       518, 393,
-       685, 865,
-       1283, 1444,
-       1443, 1559,
-       1447, 1444,
-       1458, 1572,
-       1504, 1614,
-       1571, 1669,
-       1752, 619,
-       1862, 619
+       39,
+       -1, 93,
+       95, 323,
+       166, 323,
+       208, 323,
+       262, 323,
+       354, 323,
+       389, 323,
+       479, 323,
+       522, 323,
+       587, 323,
+       890, 323,
+       919, 323,
+       995, 323,
+       1096, 323,
+       1195, 323,
+       1246, 323,
+       1265, 323,
+       1280, 323,
+       1387, 323,
+       1401, 323,
+       1414, 323,
+       1431, 323,
+       1458, 323,
+       1530, 323,
+       1606, 323,
+       1617, 323,
+       1760, 323,
+       1819, 323,
+       1861, 323,
+       2195, 323,
+       2485, 323,
+       2731, 323,
+       2834, 323,
+       2896, 323,
+       3100, 323,
+       3211, 323,
+       3228, 323,
+       3510, 323,
+       3519, 323
 };
 static int parser_goto_row114[] = {
-       6,
-       -1, 1346,
-       476, 681,
-       1493, 1606,
-       1503, 1613,
-       1505, 1616,
-       1507, 1619
+       529,
+       -1, 261,
+       13, 94,
+       27, 94,
+       38, 164,
+       39, 192,
+       41, 94,
+       50, 94,
+       68, 192,
+       95, 324,
+       110, 94,
+       166, 368,
+       177, 192,
+       181, 387,
+       208, 425,
+       211, 164,
+       221, 94,
+       232, 94,
+       243, 478,
+       262, 511,
+       269, 520,
+       277, 520,
+       279, 583,
+       302, 520,
+       304, 94,
+       317, 192,
+       319, 192,
+       320, 192,
+       321, 192,
+       322, 192,
+       360, 520,
+       373, 192,
+       374, 520,
+       389, 685,
+       433, 520,
+       444, 164,
+       448, 164,
+       452, 164,
+       456, 164,
+       470, 520,
+       479, 778,
+       515, 94,
+       516, 520,
+       522, 819,
+       537, 520,
+       556, 478,
+       587, 863,
+       602, 94,
+       604, 889,
+       628, 192,
+       629, 192,
+       657, 94,
+       660, 94,
+       671, 520,
+       688, 192,
+       690, 192,
+       691, 192,
+       692, 520,
+       693, 192,
+       694, 192,
+       695, 192,
+       696, 192,
+       697, 192,
+       698, 192,
+       699, 192,
+       700, 192,
+       701, 192,
+       702, 192,
+       703, 192,
+       704, 192,
+       705, 192,
+       706, 192,
+       707, 192,
+       708, 192,
+       709, 192,
+       710, 192,
+       711, 994,
+       721, 164,
+       725, 164,
+       729, 164,
+       733, 164,
+       737, 94,
+       739, 520,
+       745, 520,
+       749, 520,
+       753, 520,
+       757, 520,
+       760, 94,
+       783, 520,
+       802, 1095,
+       807, 94,
+       810, 94,
+       837, 520,
+       838, 520,
+       844, 520,
+       885, 192,
+       887, 192,
+       890, 1190,
+       891, 1194,
+       942, 1245,
+       946, 94,
+       949, 94,
+       956, 994,
+       963, 1264,
+       968, 192,
+       995, 1275,
+       996, 1279,
+       1001, 94,
+       1008, 520,
+       1012, 520,
+       1016, 520,
+       1020, 520,
+       1025, 94,
+       1028, 94,
+       1052, 1377,
+       1053, 94,
+       1054, 94,
+       1056, 94,
+       1062, 1095,
+       1064, 1400,
+       1096, 1409,
+       1097, 1413,
+       1104, 520,
+       1113, 1430,
+       1126, 583,
+       1129, 94,
+       1135, 520,
+       1138, 1456,
+       1141, 583,
+       1159, 164,
+       1160, 520,
+       1161, 164,
+       1168, 164,
+       1172, 1522,
+       1186, 192,
+       1187, 192,
+       1188, 192,
+       1189, 192,
+       1191, 192,
+       1192, 192,
+       1195, 1562,
+       1236, 94,
+       1246, 1598,
+       1256, 1605,
+       1258, 1279,
+       1265, 1614,
+       1266, 1616,
+       1280, 1628,
+       1284, 94,
+       1318, 94,
+       1328, 94,
+       1338, 94,
+       1348, 94,
+       1355, 192,
+       1356, 1377,
+       1358, 94,
+       1360, 1377,
+       1370, 192,
+       1378, 94,
+       1387, 1745,
+       1398, 1413,
+       1401, 1757,
+       1402, 1759,
+       1414, 1768,
+       1415, 520,
+       1431, 1787,
+       1436, 583,
+       1452, 520,
+       1458, 1815,
+       1459, 1817,
+       1466, 1845,
+       1478, 164,
+       1479, 520,
+       1480, 164,
+       1486, 164,
+       1497, 94,
+       1499, 520,
+       1509, 387,
+       1530, 1943,
+       1549, 192,
+       1550, 192,
+       1558, 192,
+       1559, 192,
+       1560, 192,
+       1561, 192,
+       1579, 583,
+       1586, 1522,
+       1597, 164,
+       1606, 2024,
+       1617, 2033,
+       1635, 94,
+       1645, 94,
+       1655, 94,
+       1665, 94,
+       1678, 94,
+       1687, 94,
+       1696, 94,
+       1705, 94,
+       1713, 94,
+       1720, 94,
+       1730, 520,
+       1735, 192,
+       1736, 192,
+       1737, 192,
+       1738, 94,
+       1742, 94,
+       1743, 192,
+       1744, 192,
+       1760, 2132,
+       1797, 583,
+       1798, 583,
+       1799, 583,
+       1800, 583,
+       1819, 2174,
+       1832, 1845,
+       1833, 1845,
+       1834, 1845,
+       1835, 2193,
+       1836, 1845,
+       1861, 2231,
+       1871, 94,
+       1885, 94,
+       1887, 520,
+       1889, 164,
+       1890, 520,
+       1891, 164,
+       1893, 164,
+       1896, 164,
+       1897, 520,
+       1898, 164,
+       1900, 164,
+       1903, 164,
+       1904, 520,
+       1905, 164,
+       1907, 164,
+       1910, 164,
+       1911, 520,
+       1912, 164,
+       1914, 164,
+       1917, 94,
+       1925, 94,
+       1930, 520,
+       1932, 583,
+       1945, 520,
+       1979, 192,
+       1980, 192,
+       1985, 583,
+       2004, 1522,
+       2014, 1245,
+       2035, 520,
+       2044, 94,
+       2053, 94,
+       2062, 94,
+       2071, 94,
+       2107, 1377,
+       2110, 2484,
+       2116, 94,
+       2122, 192,
+       2123, 192,
+       2138, 520,
+       2153, 583,
+       2154, 583,
+       2155, 583,
+       2156, 583,
+       2163, 583,
+       2180, 1845,
+       2181, 520,
+       2182, 1845,
+       2195, 2540,
+       2238, 94,
+       2244, 94,
+       2245, 94,
+       2249, 94,
+       2253, 164,
+       2254, 520,
+       2255, 164,
+       2257, 164,
+       2260, 164,
+       2261, 520,
+       2262, 164,
+       2264, 164,
+       2267, 164,
+       2268, 520,
+       2269, 164,
+       2271, 164,
+       2274, 164,
+       2275, 520,
+       2276, 164,
+       2278, 164,
+       2281, 94,
+       2287, 94,
+       2290, 94,
+       2301, 94,
+       2303, 520,
+       2311, 94,
+       2313, 520,
+       2321, 94,
+       2323, 520,
+       2331, 94,
+       2333, 520,
+       2335, 94,
+       2338, 94,
+       2357, 2729,
+       2406, 583,
+       2407, 583,
+       2408, 583,
+       2409, 583,
+       2419, 1522,
+       2420, 1522,
+       2421, 1522,
+       2422, 1522,
+       2423, 583,
+       2427, 520,
+       2476, 1377,
+       2478, 94,
+       2482, 192,
+       2483, 192,
+       2485, 2830,
+       2486, 2833,
+       2527, 520,
+       2531, 520,
+       2545, 1845,
+       2547, 1845,
+       2548, 1845,
+       2549, 520,
+       2550, 1845,
+       2551, 1845,
+       2552, 1845,
+       2553, 1845,
+       2554, 1845,
+       2555, 1845,
+       2556, 1845,
+       2557, 1845,
+       2558, 1845,
+       2559, 1845,
+       2560, 1845,
+       2561, 1845,
+       2562, 1845,
+       2563, 1845,
+       2564, 1845,
+       2565, 1845,
+       2566, 1845,
+       2567, 1845,
+       2568, 2895,
+       2577, 94,
+       2583, 94,
+       2584, 94,
+       2590, 94,
+       2591, 94,
+       2593, 94,
+       2604, 94,
+       2606, 520,
+       2614, 94,
+       2616, 520,
+       2624, 94,
+       2626, 520,
+       2634, 94,
+       2636, 520,
+       2638, 94,
+       2641, 94,
+       2652, 94,
+       2655, 94,
+       2659, 94,
+       2665, 94,
+       2669, 94,
+       2673, 94,
+       2679, 94,
+       2683, 94,
+       2687, 94,
+       2693, 94,
+       2697, 94,
+       2701, 94,
+       2707, 94,
+       2713, 94,
+       2731, 3095,
+       2732, 3098,
+       2754, 583,
+       2755, 583,
+       2756, 583,
+       2757, 583,
+       2764, 1522,
+       2765, 1522,
+       2766, 1522,
+       2767, 1522,
+       2768, 583,
+       2789, 520,
+       2816, 1377,
+       2817, 1377,
+       2818, 1377,
+       2822, 1377,
+       2826, 192,
+       2827, 192,
+       2828, 192,
+       2829, 192,
+       2831, 192,
+       2832, 192,
+       2834, 3192,
+       2850, 94,
+       2857, 2895,
+       2860, 3210,
+       2867, 1845,
+       2870, 520,
+       2896, 3223,
+       2897, 3227,
+       2907, 94,
+       2913, 94,
+       2916, 94,
+       2919, 94,
+       2923, 94,
+       2929, 94,
+       2933, 94,
+       2937, 94,
+       2943, 94,
+       2947, 94,
+       2951, 94,
+       2957, 94,
+       2961, 94,
+       2965, 94,
+       2971, 94,
+       2977, 94,
+       2985, 94,
+       2991, 94,
+       2992, 94,
+       2994, 94,
+       2999, 94,
+       3002, 94,
+       3009, 94,
+       3015, 94,
+       3016, 94,
+       3018, 94,
+       3023, 94,
+       3026, 94,
+       3033, 94,
+       3039, 94,
+       3040, 94,
+       3042, 94,
+       3047, 94,
+       3050, 94,
+       3057, 94,
+       3063, 94,
+       3064, 94,
+       3066, 94,
+       3071, 94,
+       3074, 94,
+       3100, 3438,
+       3138, 583,
+       3141, 583,
+       3144, 583,
+       3147, 583,
+       3152, 520,
+       3153, 192,
+       3184, 192,
+       3185, 192,
+       3188, 192,
+       3189, 192,
+       3190, 192,
+       3191, 192,
+       3206, 3509,
+       3208, 3227,
+       3211, 3516,
+       3212, 3518,
+       3228, 3531,
+       3240, 94,
+       3246, 94,
+       3247, 94,
+       3249, 94,
+       3254, 94,
+       3257, 94,
+       3264, 94,
+       3270, 94,
+       3271, 94,
+       3273, 94,
+       3278, 94,
+       3281, 94,
+       3288, 94,
+       3294, 94,
+       3295, 94,
+       3297, 94,
+       3302, 94,
+       3305, 94,
+       3312, 94,
+       3318, 94,
+       3319, 94,
+       3321, 94,
+       3326, 94,
+       3329, 94,
+       3343, 94,
+       3349, 94,
+       3352, 94,
+       3357, 94,
+       3362, 94,
+       3368, 94,
+       3371, 94,
+       3376, 94,
+       3381, 94,
+       3387, 94,
+       3390, 94,
+       3395, 94,
+       3400, 94,
+       3406, 94,
+       3409, 94,
+       3414, 94,
+       3451, 583,
+       3454, 583,
+       3457, 583,
+       3460, 583,
+       3472, 520,
+       3488, 1377,
+       3498, 192,
+       3499, 192,
+       3510, 3730,
+       3519, 3738,
+       3537, 94,
+       3543, 94,
+       3546, 94,
+       3551, 94,
+       3556, 94,
+       3562, 94,
+       3565, 94,
+       3570, 94,
+       3575, 94,
+       3581, 94,
+       3584, 94,
+       3589, 94,
+       3594, 94,
+       3600, 94,
+       3603, 94,
+       3608, 94,
+       3740, 520,
+       3928, 1845
 };
 static int parser_goto_row115[] = {
-       23,
-       -1, 81,
-       83, 260,
-       155, 260,
-       196, 260,
-       396, 260,
-       453, 260,
-       683, 260,
-       692, 260,
-       754, 260,
-       802, 260,
-       851, 260,
-       945, 260,
-       969, 260,
-       987, 260,
-       1051, 260,
-       1170, 260,
-       1173, 260,
-       1348, 260,
-       1388, 260,
-       1421, 260,
-       1597, 260,
-       1715, 260,
-       1739, 260
+       140,
+       -1, 1249,
+       1250, 1600,
+       1283, 1629,
+       1630, 2040,
+       1677, 2078,
+       1686, 2083,
+       1695, 2088,
+       1704, 2093,
+       1924, 2343,
+       2043, 2442,
+       2052, 2447,
+       2061, 2452,
+       2070, 2457,
+       2079, 2464,
+       2084, 2466,
+       2089, 2468,
+       2094, 2470,
+       2243, 2580,
+       2286, 2645,
+       2334, 2709,
+       2344, 2716,
+       2443, 2797,
+       2448, 2799,
+       2453, 2801,
+       2458, 2803,
+       2576, 2900,
+       2581, 2903,
+       2582, 2904,
+       2589, 2910,
+       2637, 2973,
+       2646, 2980,
+       2664, 3006,
+       2678, 3030,
+       2692, 3054,
+       2706, 3078,
+       2710, 3081,
+       2712, 3082,
+       2901, 3229,
+       2905, 3230,
+       2906, 3231,
+       2911, 3234,
+       2912, 3235,
+       2928, 3261,
+       2942, 3285,
+       2956, 3309,
+       2970, 3333,
+       2974, 3336,
+       2976, 3337,
+       2990, 3346,
+       2998, 3353,
+       3007, 3360,
+       3014, 3365,
+       3022, 3372,
+       3031, 3379,
+       3038, 3384,
+       3046, 3391,
+       3055, 3398,
+       3062, 3403,
+       3070, 3410,
+       3079, 3417,
+       3083, 3418,
+       3232, 3532,
+       3236, 3533,
+       3245, 3540,
+       3253, 3547,
+       3262, 3554,
+       3269, 3559,
+       3277, 3566,
+       3286, 3573,
+       3293, 3578,
+       3301, 3585,
+       3310, 3592,
+       3317, 3597,
+       3325, 3604,
+       3334, 3611,
+       3338, 3612,
+       3342, 3613,
+       3347, 3616,
+       3348, 3617,
+       3354, 3622,
+       3356, 3623,
+       3361, 3626,
+       3366, 3629,
+       3367, 3630,
+       3373, 3635,
+       3375, 3636,
+       3380, 3639,
+       3385, 3642,
+       3386, 3643,
+       3392, 3648,
+       3394, 3649,
+       3399, 3652,
+       3404, 3655,
+       3405, 3656,
+       3411, 3661,
+       3413, 3662,
+       3536, 3745,
+       3541, 3748,
+       3542, 3749,
+       3548, 3754,
+       3550, 3755,
+       3555, 3758,
+       3560, 3761,
+       3561, 3762,
+       3567, 3767,
+       3569, 3768,
+       3574, 3771,
+       3579, 3774,
+       3580, 3775,
+       3586, 3780,
+       3588, 3781,
+       3593, 3784,
+       3598, 3787,
+       3599, 3788,
+       3605, 3793,
+       3607, 3794,
+       3614, 3797,
+       3618, 3798,
+       3624, 3801,
+       3627, 3802,
+       3631, 3803,
+       3637, 3806,
+       3640, 3807,
+       3644, 3808,
+       3650, 3811,
+       3653, 3812,
+       3657, 3813,
+       3663, 3816,
+       3746, 3873,
+       3750, 3874,
+       3756, 3877,
+       3759, 3878,
+       3763, 3879,
+       3769, 3882,
+       3772, 3883,
+       3776, 3884,
+       3782, 3887,
+       3785, 3888,
+       3789, 3889,
+       3795, 3892
 };
 static int parser_goto_row116[] = {
-       229,
-       -1, 195,
-       13, 82,
-       27, 82,
-       31, 139,
-       33, 82,
-       37, 82,
-       55, 139,
-       83, 261,
-       98, 82,
-       125, 139,
-       155, 327,
-       159, 82,
-       167, 82,
-       196, 385,
-       203, 394,
-       211, 394,
-       213, 449,
-       242, 82,
-       254, 139,
-       256, 139,
-       257, 139,
-       258, 139,
-       259, 139,
-       280, 139,
-       281, 394,
-       349, 394,
-       389, 82,
-       390, 394,
-       396, 613,
-       403, 394,
-       453, 645,
-       476, 682,
-       481, 82,
-       483, 691,
-       506, 139,
-       507, 139,
-       518, 394,
-       528, 139,
-       530, 139,
-       531, 139,
-       532, 394,
-       533, 139,
-       534, 139,
-       535, 139,
-       536, 139,
-       537, 139,
-       538, 139,
-       539, 139,
-       540, 139,
-       541, 139,
-       542, 139,
-       543, 139,
-       544, 139,
-       545, 139,
-       546, 139,
-       547, 139,
-       548, 139,
-       549, 139,
-       550, 139,
-       551, 753,
-       555, 82,
-       557, 394,
-       562, 82,
-       578, 394,
-       597, 801,
-       601, 82,
-       604, 82,
-       621, 394,
-       622, 394,
-       628, 394,
-       683, 864,
-       685, 394,
-       687, 139,
-       689, 139,
-       692, 879,
-       721, 753,
-       727, 139,
-       754, 906,
-       757, 82,
-       760, 82,
-       764, 935,
-       765, 82,
-       766, 82,
-       768, 82,
-       774, 801,
-       802, 961,
-       809, 394,
-       813, 968,
-       824, 82,
-       830, 394,
-       833, 985,
-       835, 449,
-       875, 139,
-       876, 139,
-       877, 139,
-       878, 139,
-       893, 1050,
-       913, 139,
-       914, 935,
-       916, 82,
-       918, 935,
-       928, 139,
-       936, 82,
-       945, 1094,
-       962, 394,
-       969, 1115,
-       981, 394,
-       987, 1130,
-       994, 1154,
-       1006, 394,
-       1009, 82,
-       1043, 139,
-       1044, 139,
-       1051, 1224,
-       1063, 82,
-       1070, 82,
-       1080, 394,
-       1084, 139,
-       1085, 139,
-       1086, 139,
-       1087, 82,
-       1091, 82,
-       1092, 139,
-       1093, 139,
-       1120, 449,
-       1142, 1154,
-       1143, 1154,
-       1144, 1154,
-       1145, 1154,
-       1170, 1328,
-       1182, 1347,
-       1186, 82,
-       1196, 1380,
-       1202, 394,
-       1227, 394,
-       1238, 935,
-       1241, 1420,
-       1246, 82,
-       1252, 139,
-       1253, 139,
-       1257, 394,
-       1282, 1154,
-       1283, 394,
-       1284, 1154,
-       1348, 1494,
-       1388, 1525,
-       1412, 935,
-       1414, 82,
-       1418, 139,
-       1419, 139,
-       1421, 1549,
-       1431, 449,
-       1443, 394,
-       1447, 394,
-       1454, 1154,
-       1456, 1154,
-       1457, 1154,
-       1458, 394,
-       1459, 1154,
-       1460, 1154,
-       1461, 1154,
-       1462, 1154,
-       1463, 1154,
-       1464, 1154,
-       1465, 1154,
-       1466, 1154,
-       1467, 1154,
-       1468, 1154,
-       1469, 1154,
-       1470, 1154,
-       1471, 1154,
-       1472, 1154,
-       1473, 1154,
-       1474, 1154,
-       1475, 1154,
-       1476, 1154,
-       1477, 1596,
-       1493, 682,
-       1503, 682,
-       1504, 394,
-       1505, 682,
-       1507, 682,
-       1513, 394,
-       1515, 449,
-       1535, 935,
-       1536, 935,
-       1537, 935,
-       1541, 935,
-       1545, 139,
-       1546, 139,
-       1547, 139,
-       1548, 139,
-       1554, 449,
-       1564, 1596,
-       1568, 1154,
-       1571, 394,
-       1597, 1677,
-       1603, 1347,
-       1621, 82,
-       1623, 394,
-       1635, 1713,
-       1644, 139,
-       1658, 139,
-       1659, 139,
-       1666, 1738,
-       1678, 1380,
-       1680, 394,
-       1687, 82,
-       1691, 82,
-       1699, 82,
-       1715, 1792,
-       1728, 935,
-       1739, 1807,
-       1752, 394,
-       1756, 82,
-       1762, 82,
-       1763, 82,
-       1766, 82,
-       1771, 82,
-       1774, 82,
-       1809, 394,
-       1811, 449,
-       1815, 394,
-       1817, 82,
-       1823, 82,
-       1828, 82,
-       1833, 82,
-       1862, 394,
-       1914, 1154
+       86,
+       -1, 103,
+       356, 650,
+       647, 928,
+       648, 929,
+       651, 930,
+       659, 944,
+       716, 999,
+       878, 1156,
+       998, 1281,
+       1000, 1282,
+       1033, 1316,
+       1038, 1326,
+       1043, 1336,
+       1048, 1346,
+       1288, 1633,
+       1293, 1643,
+       1298, 1653,
+       1303, 1663,
+       1315, 1675,
+       1317, 1676,
+       1325, 1684,
+       1327, 1685,
+       1335, 1693,
+       1337, 1694,
+       1345, 1702,
+       1347, 1703,
+       1496, 1923,
+       1586, 2011,
+       1632, 2041,
+       1634, 2042,
+       1642, 2050,
+       1644, 2051,
+       1652, 2059,
+       1654, 2060,
+       1662, 2068,
+       1664, 2069,
+       2004, 2417,
+       2010, 2424,
+       2012, 2425,
+       2289, 2649,
+       2416, 2769,
+       2418, 2770,
+       2419, 2773,
+       2420, 2777,
+       2421, 2781,
+       2422, 2785,
+       2764, 3123,
+       2765, 3127,
+       2766, 3131,
+       2767, 3135,
+       2772, 3139,
+       2774, 3140,
+       2776, 3142,
+       2778, 3143,
+       2780, 3145,
+       2782, 3146,
+       2784, 3148,
+       2786, 3149,
+       3122, 3452,
+       3124, 3453,
+       3126, 3455,
+       3128, 3456,
+       3130, 3458,
+       3132, 3459,
+       3134, 3461,
+       3136, 3462,
+       3150, 3469,
+       3463, 3707,
+       3468, 3712,
+       3706, 3848,
+       3708, 3850,
+       3709, 3852,
+       3710, 3854,
+       3711, 3856,
+       3844, 3904,
+       3845, 3906,
+       3846, 3908,
+       3847, 3910,
+       3849, 3911,
+       3851, 3912,
+       3853, 3913,
+       3855, 3914,
+       3903, 3923,
+       3905, 3924,
+       3907, 3925,
+       3909, 3926
 };
 static int parser_goto_row117[] = {
-       14,
-       -1, 1351,
-       1352, 1496,
-       1698, 1779,
-       1761, 1820,
-       1770, 1829,
-       1780, 1836,
-       1816, 1864,
-       1821, 1867,
-       1822, 1868,
-       1830, 1874,
-       1832, 1875,
-       1865, 1901,
-       1869, 1902,
-       1876, 1905
-};
-static int parser_goto_row118[] = {
-       14,
-       -1, 91,
-       852, 1002,
-       999, 1175,
-       1000, 1176,
-       1003, 1177,
-       1008, 1184,
-       1019, 1191,
-       1620, 1697,
-       1678, 1749,
-       1748, 1812,
-       1750, 1813,
-       1765, 1825,
-       1897, 1918,
-       1917, 1926
-};
-static int parser_goto_row119[] = {
-       59,
-       -1, 604,
+       98,
+       -1, 810,
        0, 12,
        3, 23,
        5, 12,
@@ -25374,621 +51051,960 @@ static int parser_goto_row119[] = {
        28, 12,
        29, 12,
        30, 12,
-       33, 159,
-       37, 167,
-       64, 242,
-       94, 12,
-       95, 12,
-       99, 12,
-       104, 269,
-       105, 270,
+       41, 221,
+       50, 232,
+       76, 304,
+       106, 12,
+       107, 12,
        111, 12,
-       112, 12,
-       114, 12,
-       243, 481,
-       265, 12,
-       271, 511,
-       274, 12,
-       331, 555,
-       339, 562,
-       554, 757,
-       556, 760,
-       563, 766,
-       764, 936,
-       765, 167,
-       768, 167,
-       824, 167,
-       865, 1022,
-       914, 1063,
-       918, 1070,
-       1020, 1022,
-       1024, 1022,
-       1089, 242,
-       1175, 1022,
-       1184, 1022,
-       1238, 1414,
-       1248, 481,
-       1332, 1022,
-       1349, 1022,
-       1408, 757,
-       1412, 1414,
-       1499, 1022,
-       1535, 936,
-       1536, 1070,
-       1537, 1070,
-       1541, 1070,
-       1610, 1022,
-       1697, 1022,
-       1728, 1414,
-       1778, 1022,
-       1825, 1022,
-       1870, 1022
+       116, 336,
+       117, 337,
+       127, 12,
+       128, 12,
+       130, 12,
+       305, 602,
+       328, 12,
+       338, 640,
+       348, 12,
+       437, 737,
+       460, 760,
+       599, 881,
+       735, 881,
+       736, 1025,
+       738, 1028,
+       761, 1054,
+       879, 881,
+       883, 881,
+       928, 1226,
+       940, 1236,
+       944, 1226,
+       1023, 881,
+       1036, 881,
+       1041, 881,
+       1046, 881,
+       1051, 881,
+       1052, 1378,
+       1053, 232,
+       1056, 232,
+       1129, 232,
+       1228, 1588,
+       1238, 1236,
+       1252, 1236,
+       1291, 881,
+       1296, 881,
+       1301, 881,
+       1306, 881,
+       1324, 881,
+       1334, 881,
+       1344, 881,
+       1354, 881,
+       1356, 1713,
+       1360, 1720,
+       1602, 1236,
+       1641, 881,
+       1651, 881,
+       1661, 881,
+       1671, 881,
+       1740, 304,
+       1865, 881,
+       1923, 1226,
+       2077, 881,
+       2107, 2478,
+       2118, 602,
+       2235, 881,
+       2463, 881,
+       2465, 881,
+       2467, 881,
+       2469, 881,
+       2471, 881,
+       2472, 1025,
+       2476, 2478,
+       2649, 1226,
+       2798, 881,
+       2800, 881,
+       2802, 881,
+       2804, 881,
+       2808, 881,
+       2810, 881,
+       2812, 881,
+       2814, 881,
+       2816, 1378,
+       2817, 1720,
+       2818, 1720,
+       2822, 1720,
+       3157, 881,
+       3159, 881,
+       3161, 881,
+       3163, 881,
+       3202, 1236,
+       3488, 2478,
+       3506, 1236
 };
-static int parser_goto_row120[] = {
-       18,
-       -1, 98,
+static int parser_goto_row118[] = {
+       23,
+       -1, 882,
        0, 13,
        5, 27,
        18, 27,
+       19, 110,
+       20, 110,
        28, 27,
-       865, 1023,
-       1020, 1023,
-       1024, 1199,
-       1175, 1331,
-       1184, 1331,
-       1332, 1331,
-       1349, 1331,
-       1499, 1023,
-       1610, 1023,
-       1697, 1331,
-       1778, 1331,
-       1825, 1331,
-       1870, 1331
+       29, 110,
+       30, 110,
+       106, 110,
+       107, 110,
+       111, 110,
+       127, 110,
+       128, 110,
+       130, 110,
+       328, 110,
+       348, 110,
+       883, 1175,
+       928, 1227,
+       944, 1227,
+       1228, 1227,
+       1923, 1227,
+       2649, 1227
 };
-static int parser_goto_row121[] = {
-       246,
-       -1, 14,
-       35, 162,
-       36, 165,
-       38, 169,
-       44, 203,
-       49, 210,
-       52, 213,
-       53, 214,
-       79, 253,
-       84, 262,
-       117, 279,
-       118, 280,
-       119, 281,
-       120, 282,
-       126, 290,
-       171, 347,
-       172, 348,
-       173, 349,
-       174, 350,
-       215, 459,
-       216, 460,
-       236, 465,
-       237, 466,
-       238, 467,
-       239, 468,
-       244, 482,
-       245, 483,
-       250, 486,
-       277, 513,
-       287, 518,
-       302, 528,
-       303, 530,
-       304, 531,
-       305, 532,
-       306, 533,
-       307, 534,
-       308, 535,
-       309, 536,
-       310, 537,
-       311, 538,
-       312, 539,
-       313, 540,
-       314, 541,
-       315, 542,
-       316, 543,
-       317, 544,
-       318, 545,
-       319, 546,
-       320, 547,
-       321, 548,
-       322, 549,
-       323, 550,
-       324, 551,
-       333, 557,
-       336, 560,
-       338, 561,
-       341, 564,
-       343, 565,
-       345, 566,
-       357, 574,
-       358, 576,
-       359, 577,
-       360, 578,
-       361, 579,
-       362, 580,
-       363, 581,
-       364, 582,
-       365, 583,
-       366, 584,
-       367, 585,
-       368, 586,
-       369, 587,
-       370, 588,
-       371, 589,
-       372, 590,
-       373, 591,
-       374, 592,
-       375, 593,
-       376, 594,
-       377, 595,
-       378, 596,
-       379, 597,
-       397, 614,
-       401, 618,
-       413, 214,
-       445, 633,
-       447, 636,
-       454, 647,
-       455, 648,
-       456, 649,
-       469, 656,
-       470, 657,
-       478, 685,
-       490, 697,
-       495, 700,
-       508, 714,
-       514, 717,
-       520, 721,
-       524, 724,
-       529, 727,
-       558, 762,
-       567, 771,
-       568, 772,
-       572, 774,
-       575, 776,
-       606, 809,
-       611, 813,
-       623, 830,
-       632, 833,
-       634, 835,
-       651, 846,
-       681, 860,
-       688, 869,
-       695, 880,
-       718, 893,
-       750, 901,
-       763, 911,
-       767, 948,
-       769, 951,
-       770, 952,
-       807, 962,
-       810, 965,
-       816, 971,
-       822, 977,
-       825, 981,
-       842, 992,
-       843, 993,
-       844, 994,
-       848, 998,
-       856, 1005,
-       857, 1006,
-       859, 1013,
-       892, 1048,
-       896, 1053,
-       915, 1067,
-       917, 1069,
-       919, 1073,
-       925, 1079,
-       954, 1100,
-       964, 1109,
-       972, 1118,
-       975, 1120,
-       978, 1122,
-       982, 1125,
-       996, 1171,
-       1007, 1182,
-       1015, 1189,
-       1024, 1200,
-       1025, 1201,
-       1026, 1202,
-       1055, 1226,
-       1056, 1227,
-       1083, 1241,
-       1105, 1256,
-       1106, 1257,
-       1110, 1260,
-       1124, 1273,
-       1131, 1278,
-       1134, 1281,
-       1135, 1282,
-       1136, 1283,
-       1137, 1284,
-       1155, 1303,
-       1180, 1339,
-       1220, 1400,
-       1225, 1404,
-       1233, 1409,
-       1234, 1410,
-       1236, 1411,
-       1239, 1416,
-       1254, 1425,
-       1265, 1431,
-       1270, 1432,
-       1289, 1447,
-       1304, 1454,
-       1305, 1456,
-       1306, 1457,
-       1307, 1458,
-       1308, 1459,
-       1309, 1460,
-       1310, 1461,
-       1311, 1462,
-       1312, 1463,
-       1313, 1464,
-       1314, 1465,
-       1315, 1466,
-       1316, 1467,
-       1317, 1468,
-       1318, 1469,
-       1319, 1470,
-       1320, 1471,
-       1321, 1472,
-       1322, 1473,
-       1323, 1474,
-       1324, 1475,
-       1325, 1476,
-       1326, 1477,
-       1336, 1486,
-       1337, 1487,
-       1340, 1489,
-       1365, 1515,
-       1390, 1526,
-       1391, 1527,
-       1406, 1532,
-       1407, 1533,
-       1433, 1554,
-       1439, 1557,
-       1441, 1558,
-       1449, 1564,
-       1455, 1568,
-       1485, 1601,
-       1490, 1603,
-       1497, 1607,
-       1500, 1611,
-       1505, 860,
-       1507, 860,
-       1509, 1623,
-       1521, 1635,
-       1530, 1644,
-       1550, 1660,
-       1552, 1661,
-       1561, 1666,
-       1593, 1672,
-       1605, 1680,
-       1608, 1681,
-       1613, 860,
-       1616, 860,
-       1619, 860,
-       1642, 1725,
-       1645, 1727,
-       1664, 1736,
-       1742, 1808,
-       1743, 1809,
-       1747, 1811,
-       1751, 1814,
-       1753, 1815,
-       1767, 1827,
-       1803, 1852,
-       1857, 1895,
-       1858, 1896,
-       1861, 1898,
-       1862, 1899,
-       1863, 1900,
-       1893, 1914,
-       1915, 1925,
-       1919, 1927
+static int parser_goto_row119[] = {
+       432,
+       -1, 165,
+       0, 14,
+       5, 14,
+       18, 14,
+       19, 14,
+       28, 14,
+       29, 14,
+       31, 132,
+       32, 135,
+       44, 225,
+       45, 226,
+       46, 227,
+       47, 228,
+       48, 229,
+       49, 230,
+       51, 234,
+       57, 269,
+       62, 276,
+       65, 279,
+       66, 280,
+       74, 302,
+       91, 316,
+       96, 325,
+       106, 14,
+       122, 343,
+       123, 344,
+       124, 345,
+       125, 346,
+       127, 14,
+       137, 358,
+       139, 360,
+       162, 363,
+       169, 372,
+       170, 373,
+       171, 374,
+       172, 375,
+       178, 383,
+       209, 426,
+       210, 427,
+       212, 429,
+       213, 430,
+       214, 431,
+       215, 432,
+       216, 433,
+       236, 468,
+       237, 469,
+       238, 470,
+       239, 471,
+       281, 593,
+       282, 594,
+       306, 603,
+       307, 604,
+       313, 608,
+       331, 636,
+       332, 637,
+       333, 638,
+       334, 639,
+       339, 641,
+       340, 642,
+       341, 643,
+       342, 644,
+       351, 646,
+       362, 657,
+       370, 666,
+       380, 671,
+       399, 688,
+       400, 690,
+       401, 691,
+       402, 692,
+       403, 693,
+       404, 694,
+       405, 695,
+       406, 696,
+       407, 697,
+       408, 698,
+       409, 699,
+       410, 700,
+       411, 701,
+       412, 702,
+       413, 703,
+       414, 704,
+       415, 705,
+       416, 706,
+       417, 707,
+       418, 708,
+       419, 709,
+       420, 710,
+       421, 711,
+       439, 739,
+       442, 742,
+       443, 743,
+       445, 745,
+       446, 746,
+       447, 747,
+       449, 749,
+       450, 750,
+       451, 751,
+       453, 753,
+       454, 754,
+       455, 755,
+       457, 757,
+       458, 758,
+       459, 759,
+       462, 762,
+       464, 763,
+       466, 764,
+       482, 779,
+       483, 781,
+       484, 782,
+       485, 783,
+       486, 784,
+       487, 785,
+       488, 786,
+       489, 787,
+       490, 788,
+       491, 789,
+       492, 790,
+       493, 791,
+       494, 792,
+       495, 793,
+       496, 794,
+       497, 795,
+       498, 796,
+       499, 797,
+       500, 798,
+       501, 799,
+       502, 800,
+       503, 801,
+       504, 802,
+       526, 825,
+       527, 826,
+       528, 827,
+       529, 828,
+       530, 829,
+       535, 834,
+       547, 280,
+       579, 850,
+       581, 853,
+       588, 865,
+       589, 866,
+       590, 867,
+       605, 891,
+       612, 896,
+       617, 899,
+       630, 913,
+       632, 914,
+       633, 915,
+       634, 916,
+       635, 917,
+       654, 937,
+       658, 942,
+       665, 949,
+       667, 952,
+       673, 956,
+       678, 960,
+       682, 963,
+       689, 968,
+       712, 996,
+       719, 1005,
+       720, 1006,
+       722, 1008,
+       723, 1009,
+       724, 1010,
+       726, 1012,
+       727, 1013,
+       728, 1014,
+       730, 1016,
+       731, 1017,
+       732, 1018,
+       734, 1020,
+       740, 1030,
+       765, 1059,
+       766, 1060,
+       770, 1062,
+       774, 1064,
+       780, 1070,
+       803, 1097,
+       812, 1104,
+       817, 1113,
+       820, 1115,
+       821, 1116,
+       822, 1117,
+       823, 1118,
+       830, 1126,
+       839, 1135,
+       848, 1138,
+       851, 1141,
+       869, 1152,
+       874, 1154,
+       883, 1176,
+       886, 1180,
+       894, 1196,
+       921, 1213,
+       922, 1214,
+       923, 1215,
+       924, 1216,
+       934, 1232,
+       935, 1233,
+       938, 1235,
+       940, 1237,
+       953, 1256,
+       957, 1258,
+       964, 1266,
+       991, 1270,
+       1021, 1307,
+       1031, 1314,
+       1055, 1390,
+       1057, 1393,
+       1058, 1394,
+       1063, 1398,
+       1065, 1402,
+       1102, 1415,
+       1106, 1423,
+       1107, 1424,
+       1108, 1425,
+       1109, 1426,
+       1110, 1427,
+       1119, 1436,
+       1125, 1445,
+       1127, 1448,
+       1130, 1452,
+       1139, 1459,
+       1148, 1464,
+       1149, 1465,
+       1150, 1466,
+       1164, 1490,
+       1165, 1491,
+       1166, 1492,
+       1167, 1493,
+       1170, 1499,
+       1208, 1566,
+       1209, 1567,
+       1210, 1568,
+       1211, 1569,
+       1217, 1577,
+       1220, 1579,
+       1231, 1590,
+       1238, 1593,
+       1252, 1601,
+       1255, 1603,
+       1260, 1609,
+       1322, 1681,
+       1332, 1690,
+       1342, 1699,
+       1352, 1708,
+       1357, 1717,
+       1359, 1719,
+       1361, 1723,
+       1367, 1729,
+       1396, 1751,
+       1417, 1773,
+       1418, 1774,
+       1419, 1775,
+       1420, 1776,
+       1421, 1777,
+       1437, 1797,
+       1439, 1798,
+       1441, 1799,
+       1443, 1800,
+       1446, 1802,
+       1449, 1807,
+       1453, 1810,
+       1468, 1862,
+       1482, 1879,
+       1483, 1880,
+       1484, 1881,
+       1485, 1882,
+       1488, 1887,
+       1506, 1932,
+       1531, 1944,
+       1532, 1945,
+       1570, 1985,
+       1582, 2005,
+       1583, 2006,
+       1584, 2007,
+       1585, 2008,
+       1594, 2014,
+       1602, 2019,
+       1618, 2034,
+       1619, 2035,
+       1639, 2047,
+       1649, 2056,
+       1659, 2065,
+       1669, 2074,
+       1733, 2110,
+       1769, 2137,
+       1770, 2138,
+       1783, 2149,
+       1788, 2153,
+       1790, 2154,
+       1792, 2155,
+       1794, 2156,
+       1796, 2157,
+       1803, 2163,
+       1809, 2166,
+       1820, 2175,
+       1824, 2179,
+       1825, 2180,
+       1826, 2181,
+       1827, 2182,
+       1846, 2205,
+       1863, 2232,
+       1866, 2236,
+       1895, 2303,
+       1902, 2313,
+       1909, 2323,
+       1916, 2333,
+       1938, 2357,
+       1986, 2406,
+       1989, 2407,
+       1992, 2408,
+       1995, 2409,
+       1999, 2410,
+       2000, 2411,
+       2001, 2412,
+       2002, 2413,
+       2003, 2414,
+       2009, 2423,
+       2016, 2427,
+       2020, 2429,
+       2026, 2433,
+       2102, 2473,
+       2103, 2474,
+       2105, 2475,
+       2108, 2480,
+       2111, 2486,
+       2124, 2490,
+       2158, 2510,
+       2159, 2511,
+       2160, 2512,
+       2161, 2513,
+       2187, 2531,
+       2206, 2545,
+       2207, 2547,
+       2208, 2548,
+       2209, 2549,
+       2210, 2550,
+       2211, 2551,
+       2212, 2552,
+       2213, 2553,
+       2214, 2554,
+       2215, 2555,
+       2216, 2556,
+       2217, 2557,
+       2218, 2558,
+       2219, 2559,
+       2220, 2560,
+       2221, 2561,
+       2222, 2562,
+       2223, 2563,
+       2224, 2564,
+       2225, 2565,
+       2226, 2566,
+       2227, 2567,
+       2228, 2568,
+       2233, 2572,
+       2259, 2606,
+       2266, 2616,
+       2273, 2626,
+       2280, 2636,
+       2291, 2651,
+       2358, 2732,
+       2366, 2742,
+       2367, 2743,
+       2393, 2754,
+       2396, 2755,
+       2399, 2756,
+       2402, 2757,
+       2405, 2758,
+       2415, 2768,
+       2439, 2795,
+       2440, 2796,
+       2505, 2838,
+       2506, 2839,
+       2507, 2840,
+       2508, 2841,
+       2522, 2849,
+       2524, 2850,
+       2525, 2851,
+       2533, 2857,
+       2537, 2860,
+       2546, 2867,
+       2569, 2897,
+       2594, 2915,
+       2759, 3116,
+       2760, 3117,
+       2761, 3118,
+       2762, 3119,
+       2771, 3138,
+       2775, 3141,
+       2779, 3144,
+       2783, 3147,
+       2788, 3151,
+       2790, 3152,
+       2792, 3153,
+       2835, 3193,
+       2854, 3206,
+       2858, 3208,
+       2861, 3212,
+       2892, 3218,
+       2995, 3351,
+       3019, 3370,
+       3043, 3389,
+       3067, 3408,
+       3107, 3441,
+       3111, 3442,
+       3112, 3443,
+       3113, 3444,
+       3114, 3445,
+       3121, 3451,
+       3125, 3454,
+       3129, 3457,
+       3133, 3460,
+       3154, 3475,
+       3202, 3505,
+       3204, 3507,
+       3250, 3545,
+       3274, 3564,
+       3298, 3583,
+       3322, 3602,
+       3471, 3713,
+       3472, 3714,
+       3473, 3715,
+       3506, 3725,
+       3521, 3739,
+       3522, 3740,
+       3726, 3861,
+       3857, 3915,
+       3870, 3919,
+       3871, 3920,
+       3916, 3928,
+       3929, 3932
 };
-static int parser_goto_row122[] = {
+static int parser_goto_row120[] = {
        4,
        -1, 15,
-       22, 106,
-       25, 106,
-       164, 106
+       22, 118,
+       25, 118,
+       134, 118
 };
-static int parser_goto_row123[] = {
+static int parser_goto_row121[] = {
        1,
        -1, 16
 };
+static int parser_goto_row122[] = {
+       40,
+       -1, 663,
+       718, 1004,
+       1035, 1321,
+       1040, 1331,
+       1045, 1341,
+       1050, 1351,
+       1290, 1638,
+       1295, 1648,
+       1300, 1658,
+       1305, 1668,
+       1494, 1920,
+       1869, 2241,
+       1883, 2284,
+       1921, 2341,
+       2247, 2587,
+       2285, 2644,
+       2299, 2662,
+       2309, 2676,
+       2319, 2690,
+       2329, 2704,
+       2602, 2926,
+       2612, 2940,
+       2622, 2954,
+       2632, 2968,
+       2653, 2988,
+       2663, 3005,
+       2667, 3012,
+       2677, 3029,
+       2681, 3036,
+       2691, 3053,
+       2695, 3060,
+       2705, 3077,
+       2917, 3243,
+       2927, 3260,
+       2931, 3267,
+       2941, 3284,
+       2945, 3291,
+       2955, 3308,
+       2959, 3315,
+       2969, 3332
+};
+static int parser_goto_row123[] = {
+       19,
+       -1, 584,
+       583, 861,
+       587, 864,
+       863, 1147,
+       1456, 861,
+       1458, 864,
+       1522, 861,
+       1530, 864,
+       1815, 1147,
+       1817, 861,
+       1819, 864,
+       1943, 1147,
+       2174, 1147,
+       2729, 861,
+       2731, 864,
+       3095, 1147,
+       3098, 861,
+       3100, 864,
+       3438, 1147
+};
 static int parser_goto_row124[] = {
-       4,
-       -1, 1012,
-       1618, 1694,
-       1685, 1759,
-       1695, 1777
+       16,
+       -1, 585,
+       1138, 1457,
+       1172, 1523,
+       1459, 1818,
+       1586, 1523,
+       2004, 1523,
+       2357, 2730,
+       2419, 1523,
+       2420, 1523,
+       2421, 1523,
+       2422, 1523,
+       2732, 3099,
+       2764, 1523,
+       2765, 1523,
+       2766, 1523,
+       2767, 1523
 };
 static int parser_goto_row125[] = {
-       13,
-       -1, 450,
-       449, 643,
-       453, 646,
-       645, 841,
-       985, 643,
-       987, 646,
-       1130, 841,
-       1380, 643,
-       1388, 646,
-       1525, 841,
-       1713, 643,
-       1715, 646,
-       1792, 841
+       1,
+       -1, -1
 };
 static int parser_goto_row126[] = {
-       5,
-       -1, 451,
-       833, 986,
-       1196, 1381,
-       1635, 1714,
-       1678, 1381
+       1,
+       -1, 2872
 };
 static int parser_goto_row127[] = {
-       1,
-       -1, -1
+       2,
+       -1, 1846,
+       3928, 3931
 };
 static int parser_goto_row128[] = {
        1,
-       -1, 1573
+       -1, 1847
 };
 static int parser_goto_row129[] = {
-       2,
-       -1, 1155,
-       1914, 1924
+       6,
+       -1, 1848,
+       2180, 2526,
+       2545, 2866,
+       2547, 2868,
+       2548, 2869,
+       2867, 3214
 };
 static int parser_goto_row130[] = {
        1,
-       -1, 1156
+       -1, 1849
 };
 static int parser_goto_row131[] = {
-       6,
-       -1, 1157,
-       1282, 1442,
-       1454, 1567,
-       1456, 1569,
-       1457, 1570,
-       1568, 1668
+       8,
+       -1, 1850,
+       2551, 2874,
+       2552, 2875,
+       2553, 2876,
+       2554, 2877,
+       2555, 2878,
+       2556, 2879,
+       2557, 2880
 };
 static int parser_goto_row132[] = {
-       1,
-       -1, 1158
+       2,
+       -1, 1851,
+       2550, 2873
 };
 static int parser_goto_row133[] = {
-       8,
-       -1, 1159,
-       1460, 1575,
-       1461, 1576,
-       1462, 1577,
-       1463, 1578,
-       1464, 1579,
-       1465, 1580,
-       1466, 1581
+       2,
+       -1, 1852,
+       2558, 2881
 };
 static int parser_goto_row134[] = {
        2,
-       -1, 1160,
-       1459, 1574
+       -1, 1853,
+       2559, 2882
 };
 static int parser_goto_row135[] = {
-       2,
-       -1, 1161,
-       1467, 1582
+       3,
+       -1, 1854,
+       2560, 2883,
+       2561, 2884
 };
 static int parser_goto_row136[] = {
-       2,
-       -1, 1162,
-       1468, 1583
+       3,
+       -1, 1855,
+       2562, 2885,
+       2563, 2886
 };
 static int parser_goto_row137[] = {
-       3,
-       -1, 1163,
-       1469, 1584,
-       1470, 1585
+       5,
+       -1, 1856,
+       2564, 2887,
+       2565, 2888,
+       2566, 2889,
+       2567, 2890
 };
 static int parser_goto_row138[] = {
-       3,
-       -1, 1164,
-       1471, 1586,
-       1472, 1587
+       5,
+       -1, 1857,
+       1833, 2190,
+       1834, 2191,
+       1836, 2196,
+       2182, 2530
 };
 static int parser_goto_row139[] = {
-       5,
-       -1, 1165,
-       1473, 1588,
-       1474, 1589,
-       1475, 1590,
-       1476, 1591
+       1,
+       -1, 1858
 };
 static int parser_goto_row140[] = {
-       5,
-       -1, 1166,
-       1143, 1292,
-       1144, 1293,
-       1145, 1294,
-       1284, 1446
+       3,
+       -1, 1859,
+       1832, 2189,
+       1835, 2194
 };
 static int parser_goto_row141[] = {
        1,
-       -1, 1167
+       -1, -1
 };
 static int parser_goto_row142[] = {
-       2,
-       -1, 1168,
-       1142, 1291
+       1,
+       -1, 1860
 };
 static int parser_goto_row143[] = {
        1,
        -1, -1
 };
 static int parser_goto_row144[] = {
-       1,
-       -1, 1169
+       4,
+       -1, 521,
+       374, 669,
+       470, 768,
+       671, 955
 };
 static int parser_goto_row145[] = {
        1,
        -1, -1
 };
 static int parser_goto_row146[] = {
-       4,
-       -1, 395,
-       281, 516,
-       349, 570,
-       518, 720
+       1,
+       -1, 1524
 };
 static int parser_goto_row147[] = {
-       1,
-       -1, -1
+       13,
+       -1, 193,
+       1172, 1525,
+       1586, 1525,
+       2004, 1525,
+       2419, 1525,
+       2420, 1525,
+       2421, 1525,
+       2422, 1525,
+       2764, 1525,
+       2765, 1525,
+       2766, 1525,
+       2767, 1525,
+       3153, 3474
 };
 static int parser_goto_row148[] = {
        1,
-       -1, 1382
+       -1, 194
 };
 static int parser_goto_row149[] = {
-       4,
-       -1, 140,
-       1196, 1383,
-       1644, 1726,
-       1678, 1383
+       6,
+       -1, 195,
+       373, 668,
+       688, 967,
+       690, 969,
+       691, 970,
+       968, 1268
 };
 static int parser_goto_row150[] = {
        1,
-       -1, 141
+       -1, 196
 };
 static int parser_goto_row151[] = {
-       6,
-       -1, 142,
-       280, 515,
-       528, 726,
-       530, 728,
-       531, 729,
-       727, 899
+       8,
+       -1, 197,
+       694, 973,
+       695, 974,
+       696, 975,
+       697, 976,
+       698, 977,
+       699, 978,
+       700, 979
 };
 static int parser_goto_row152[] = {
-       1,
-       -1, 143
+       2,
+       -1, 198,
+       693, 972
 };
 static int parser_goto_row153[] = {
-       8,
-       -1, 144,
-       534, 732,
-       535, 733,
-       536, 734,
-       537, 735,
-       538, 736,
-       539, 737,
-       540, 738
+       2,
+       -1, 199,
+       701, 980
 };
 static int parser_goto_row154[] = {
        2,
-       -1, 145,
-       533, 731
+       -1, 200,
+       702, 981
 };
 static int parser_goto_row155[] = {
-       2,
-       -1, 146,
-       541, 739
+       3,
+       -1, 201,
+       703, 982,
+       704, 983
 };
 static int parser_goto_row156[] = {
-       2,
-       -1, 147,
-       542, 740
+       3,
+       -1, 202,
+       705, 984,
+       706, 985
 };
 static int parser_goto_row157[] = {
-       3,
-       -1, 148,
-       543, 741,
-       544, 742
+       5,
+       -1, 203,
+       707, 986,
+       708, 987,
+       709, 988,
+       710, 989
 };
 static int parser_goto_row158[] = {
-       3,
-       -1, 149,
-       545, 743,
-       546, 744
+       1,
+       -1, 204
 };
 static int parser_goto_row159[] = {
-       5,
-       -1, 150,
-       547, 745,
-       548, 746,
-       549, 747,
-       550, 748
+       1,
+       -1, 205
 };
 static int parser_goto_row160[] = {
-       1,
-       -1, 151
+       15,
+       -1, 206,
+       177, 382,
+       181, 388,
+       1172, 1526,
+       1509, 388,
+       1586, 1526,
+       2004, 1526,
+       2419, 1526,
+       2420, 1526,
+       2421, 1526,
+       2422, 1526,
+       2764, 1526,
+       2765, 1526,
+       2766, 1526,
+       2767, 1526
 };
 static int parser_goto_row161[] = {
        1,
-       -1, 152
+       -1, -1
 };
 static int parser_goto_row162[] = {
-       4,
-       -1, 153,
-       125, 289,
-       1196, 1384,
-       1678, 1384
+       11,
+       -1, 207,
+       927, 1223,
+       1212, 1223,
+       1573, 1223,
+       1574, 1223,
+       1575, 1223,
+       1576, 1223,
+       1981, 1223,
+       1982, 1223,
+       1983, 1223,
+       1984, 1223
 };
 static int parser_goto_row163[] = {
        1,
-       -1, -1
+       -1, 814
 };
 static int parser_goto_row164[] = {
-       2,
-       -1, 154,
-       1116, 1268
+       16,
+       -1, 815,
+       811, 1103,
+       1111, 1428,
+       1422, 1778,
+       1779, 2145,
+       1780, 2146,
+       1781, 2147,
+       1782, 2148,
+       2140, 2498,
+       2141, 2499,
+       2142, 2500,
+       2143, 2501,
+       2144, 2502,
+       2496, 2837,
+       2528, 2853,
+       2852, 3205
 };
 static int parser_goto_row165[] = {
        1,
-       -1, 608
+       -1, 1112
 };
 static int parser_goto_row166[] = {
-       7,
-       -1, 609,
-       605, 808,
-       1111, 1261,
-       1259, 1428,
-       1426, 1551,
-       1444, 1560,
-       1559, 1665
+       1,
+       -1, -1
 };
 static int parser_goto_row167[] = {
-       1,
-       -1, 812
+       11,
+       -1, 1527,
+       1586, 2012,
+       2004, 2418,
+       2419, 2774,
+       2420, 2778,
+       2421, 2782,
+       2422, 2786,
+       2764, 3124,
+       2765, 3128,
+       2766, 3132,
+       2767, 3136
 };
 static int parser_goto_row168[] = {
        1,
-       -1, -1
+       -1, 1528
 };
 static int parser_goto_row169[] = {
-       2,
-       -1, 1385,
-       1678, 1750
+       1,
+       -1, -1
 };
 static int parser_goto_row170[] = {
-       1,
-       -1, 1386
+       2,
+       -1, 2529,
+       2531, 2856
 };
 static int parser_goto_row171[] = {
        1,
        -1, -1
 };
 static int parser_goto_row172[] = {
-       2,
-       -1, 1445,
-       1447, 1563
+       1,
+       -1, -1
 };
 static int parser_goto_row173[] = {
        1,
@@ -26051,492 +52067,969 @@ static int parser_goto_row187[] = {
        -1, -1
 };
 static int parser_goto_row188[] = {
-       1,
-       -1, -1
+       8,
+       -1, 1714,
+       1360, 1721,
+       2107, 2479,
+       2476, 2819,
+       2817, 3174,
+       2818, 3176,
+       2822, 3178,
+       3488, 3721
 };
 static int parser_goto_row189[] = {
-       1,
-       -1, -1
+       3,
+       -1, 1715,
+       1052, 1379,
+       2816, 3173
 };
 static int parser_goto_row190[] = {
-       8,
-       -1, 1064,
-       918, 1071,
-       1238, 1415,
-       1412, 1538,
-       1536, 1648,
-       1537, 1650,
-       1541, 1652,
-       1728, 1801
+       1,
+       -1, 1380
 };
 static int parser_goto_row191[] = {
-       3,
-       -1, 1065,
-       764, 937,
-       1535, 1647
+       1,
+       -1, 1381
 };
 static int parser_goto_row192[] = {
        1,
-       -1, 938
+       -1, 1382
 };
 static int parser_goto_row193[] = {
        1,
-       -1, 939
+       -1, 1383
 };
 static int parser_goto_row194[] = {
        1,
-       -1, 940
+       -1, 1384
 };
 static int parser_goto_row195[] = {
        1,
-       -1, 941
+       -1, 1385
 };
 static int parser_goto_row196[] = {
        1,
-       -1, 942
+       -1, 1386
 };
 static int parser_goto_row197[] = {
        1,
-       -1, 943
+       -1, -1
 };
 static int parser_goto_row198[] = {
-       1,
-       -1, 944
+       12,
+       -1, 222,
+       50, 233,
+       736, 1026,
+       1053, 1389,
+       1056, 1392,
+       1129, 1451,
+       1356, 1716,
+       1360, 1722,
+       2472, 2815,
+       2817, 3175,
+       2818, 3177,
+       2822, 3179
 };
 static int parser_goto_row199[] = {
        1,
        -1, -1
 };
 static int parser_goto_row200[] = {
-       12,
-       -1, 160,
-       37, 168,
-       554, 758,
-       765, 947,
-       768, 950,
-       824, 980,
-       914, 1066,
-       918, 1072,
-       1408, 1534,
-       1536, 1649,
-       1537, 1651,
-       1541, 1653
+       1,
+       -1, 586
 };
 static int parser_goto_row201[] = {
        1,
-       -1, -1
+       -1, 1529
 };
 static int parser_goto_row202[] = {
        1,
-       -1, 452
+       -1, -1
 };
 static int parser_goto_row203[] = {
        1,
-       -1, 1387
+       -1, -1
 };
 static int parser_goto_row204[] = {
        1,
-       -1, -1
+       -1, 1172
 };
 static int parser_goto_row205[] = {
        1,
-       -1, -1
-};
-static int parser_goto_row206[] = {
-       1,
-       -1, 1196
-};
-static int parser_goto_row207[] = {
-       1,
        -1, 17
 };
-static int parser_goto_row208[] = {
+static int parser_goto_row206[] = {
        2,
        -1, 18,
        5, 28
 };
-static int parser_goto_row209[] = {
+static int parser_goto_row207[] = {
        4,
        -1, 19,
        5, 29,
-       18, 94,
-       28, 111
+       18, 106,
+       28, 127
 };
-static int parser_goto_row210[] = {
+static int parser_goto_row208[] = {
        8,
        -1, 20,
        5, 30,
-       18, 95,
-       19, 99,
-       28, 112,
-       29, 114,
-       94, 265,
-       111, 274
+       18, 107,
+       19, 111,
+       28, 128,
+       29, 130,
+       106, 328,
+       127, 348
+};
+static int parser_goto_row209[] = {
+       1,
+       -1, 1868
+};
+static int parser_goto_row210[] = {
+       1,
+       -1, 883
 };
 static int parser_goto_row211[] = {
        1,
-       -1, 1502
+       -1, 1228
 };
 static int parser_goto_row212[] = {
        1,
-       -1, 1024
+       -1, 938
 };
 static int parser_goto_row213[] = {
-       4,
-       -1, 1332,
-       1184, 1349,
-       1697, 1778,
-       1825, 1870
+       1,
+       -1, 1596
 };
 static int parser_goto_row214[] = {
        1,
-       -1, 1340
+       -1, 1772
 };
 static int parser_goto_row215[] = {
-       1,
-       -1, 1492
+       7,
+       -1, 305,
+       437, 738,
+       460, 761,
+       940, 1238,
+       1252, 1602,
+       1740, 2118,
+       3202, 3506
 };
 static int parser_goto_row216[] = {
        1,
-       -1, 1108
+       -1, 854
 };
 static int parser_goto_row217[] = {
-       4,
-       -1, 243,
-       331, 556,
-       339, 563,
-       1089, 1248
+       1,
+       -1, 871
 };
 static int parser_goto_row218[] = {
        1,
-       -1, 637
+       -1, 315
 };
 static int parser_goto_row219[] = {
        1,
-       -1, 653
+       -1, 1219
 };
 static int parser_goto_row220[] = {
-       1,
-       -1, 252
+       2,
+       -1, 1805,
+       1528, 1941
 };
 static int parser_goto_row221[] = {
        1,
-       -1, 974
+       -1, 1262
 };
 static int parser_goto_row222[] = {
-       2,
-       -1, 1435,
-       1386, 1523
+       514,
+       -1, 262,
+       13, 95,
+       27, 95,
+       38, 166,
+       39, 208,
+       41, 95,
+       50, 95,
+       68, 208,
+       110, 95,
+       132, 354,
+       135, 354,
+       177, 208,
+       181, 389,
+       211, 166,
+       221, 95,
+       232, 95,
+       243, 479,
+       269, 522,
+       277, 522,
+       279, 587,
+       302, 522,
+       304, 95,
+       317, 208,
+       319, 208,
+       320, 208,
+       321, 208,
+       322, 208,
+       360, 522,
+       373, 208,
+       374, 522,
+       426, 354,
+       427, 354,
+       433, 522,
+       444, 166,
+       448, 166,
+       452, 166,
+       456, 166,
+       470, 522,
+       515, 95,
+       516, 522,
+       537, 522,
+       556, 479,
+       602, 95,
+       604, 890,
+       628, 208,
+       629, 208,
+       646, 919,
+       657, 95,
+       660, 95,
+       671, 522,
+       688, 208,
+       690, 208,
+       691, 208,
+       692, 522,
+       693, 208,
+       694, 208,
+       695, 208,
+       696, 208,
+       697, 208,
+       698, 208,
+       699, 208,
+       700, 208,
+       701, 208,
+       702, 208,
+       703, 208,
+       704, 208,
+       705, 208,
+       706, 208,
+       707, 208,
+       708, 208,
+       709, 208,
+       710, 208,
+       711, 995,
+       721, 166,
+       725, 166,
+       729, 166,
+       733, 166,
+       737, 95,
+       739, 522,
+       742, 354,
+       743, 354,
+       745, 522,
+       746, 354,
+       747, 354,
+       749, 522,
+       750, 354,
+       751, 354,
+       753, 522,
+       754, 354,
+       755, 354,
+       757, 522,
+       760, 95,
+       783, 522,
+       802, 1096,
+       807, 95,
+       810, 95,
+       837, 522,
+       838, 522,
+       844, 522,
+       885, 208,
+       887, 208,
+       891, 1195,
+       942, 1246,
+       946, 95,
+       949, 95,
+       956, 995,
+       963, 1265,
+       968, 208,
+       996, 1280,
+       1001, 95,
+       1005, 354,
+       1006, 354,
+       1008, 522,
+       1009, 354,
+       1010, 354,
+       1012, 522,
+       1013, 354,
+       1014, 354,
+       1016, 522,
+       1017, 354,
+       1018, 354,
+       1020, 522,
+       1025, 95,
+       1028, 95,
+       1052, 1387,
+       1053, 95,
+       1054, 95,
+       1056, 95,
+       1062, 1096,
+       1064, 1401,
+       1097, 1414,
+       1104, 522,
+       1113, 1431,
+       1126, 587,
+       1129, 95,
+       1135, 522,
+       1138, 1458,
+       1141, 587,
+       1159, 166,
+       1160, 522,
+       1161, 166,
+       1168, 166,
+       1172, 1530,
+       1186, 208,
+       1187, 208,
+       1188, 208,
+       1189, 208,
+       1191, 208,
+       1192, 208,
+       1236, 95,
+       1256, 1606,
+       1258, 1280,
+       1266, 1617,
+       1284, 95,
+       1318, 95,
+       1328, 95,
+       1338, 95,
+       1348, 95,
+       1355, 208,
+       1356, 1387,
+       1358, 95,
+       1360, 1387,
+       1370, 208,
+       1378, 95,
+       1398, 1414,
+       1402, 1760,
+       1415, 522,
+       1436, 587,
+       1452, 522,
+       1459, 1819,
+       1466, 1861,
+       1478, 166,
+       1479, 522,
+       1480, 166,
+       1486, 166,
+       1497, 95,
+       1499, 522,
+       1509, 389,
+       1549, 208,
+       1550, 208,
+       1558, 208,
+       1559, 208,
+       1560, 208,
+       1561, 208,
+       1579, 587,
+       1586, 1530,
+       1597, 166,
+       1635, 95,
+       1645, 95,
+       1655, 95,
+       1665, 95,
+       1678, 95,
+       1687, 95,
+       1696, 95,
+       1705, 95,
+       1713, 95,
+       1720, 95,
+       1730, 522,
+       1735, 208,
+       1736, 208,
+       1737, 208,
+       1738, 95,
+       1742, 95,
+       1743, 208,
+       1744, 208,
+       1797, 587,
+       1798, 587,
+       1799, 587,
+       1800, 587,
+       1832, 1861,
+       1833, 1861,
+       1834, 1861,
+       1835, 2195,
+       1836, 1861,
+       1871, 95,
+       1885, 95,
+       1887, 522,
+       1889, 166,
+       1890, 522,
+       1891, 166,
+       1893, 166,
+       1896, 166,
+       1897, 522,
+       1898, 166,
+       1900, 166,
+       1903, 166,
+       1904, 522,
+       1905, 166,
+       1907, 166,
+       1910, 166,
+       1911, 522,
+       1912, 166,
+       1914, 166,
+       1917, 95,
+       1925, 95,
+       1930, 522,
+       1932, 587,
+       1945, 522,
+       1979, 208,
+       1980, 208,
+       1985, 587,
+       2004, 1530,
+       2014, 1246,
+       2035, 522,
+       2044, 95,
+       2053, 95,
+       2062, 95,
+       2071, 95,
+       2107, 1387,
+       2110, 2485,
+       2116, 95,
+       2122, 208,
+       2123, 208,
+       2138, 522,
+       2153, 587,
+       2154, 587,
+       2155, 587,
+       2156, 587,
+       2163, 587,
+       2180, 1861,
+       2181, 522,
+       2182, 1861,
+       2238, 95,
+       2244, 95,
+       2245, 95,
+       2249, 95,
+       2253, 166,
+       2254, 522,
+       2255, 166,
+       2257, 166,
+       2260, 166,
+       2261, 522,
+       2262, 166,
+       2264, 166,
+       2267, 166,
+       2268, 522,
+       2269, 166,
+       2271, 166,
+       2274, 166,
+       2275, 522,
+       2276, 166,
+       2278, 166,
+       2281, 95,
+       2287, 95,
+       2290, 95,
+       2301, 95,
+       2303, 522,
+       2311, 95,
+       2313, 522,
+       2321, 95,
+       2323, 522,
+       2331, 95,
+       2333, 522,
+       2335, 95,
+       2338, 95,
+       2357, 2731,
+       2406, 587,
+       2407, 587,
+       2408, 587,
+       2409, 587,
+       2419, 1530,
+       2420, 1530,
+       2421, 1530,
+       2422, 1530,
+       2423, 587,
+       2427, 522,
+       2476, 1387,
+       2478, 95,
+       2482, 208,
+       2483, 208,
+       2486, 2834,
+       2527, 522,
+       2531, 522,
+       2545, 1861,
+       2547, 1861,
+       2548, 1861,
+       2549, 522,
+       2550, 1861,
+       2551, 1861,
+       2552, 1861,
+       2553, 1861,
+       2554, 1861,
+       2555, 1861,
+       2556, 1861,
+       2557, 1861,
+       2558, 1861,
+       2559, 1861,
+       2560, 1861,
+       2561, 1861,
+       2562, 1861,
+       2563, 1861,
+       2564, 1861,
+       2565, 1861,
+       2566, 1861,
+       2567, 1861,
+       2568, 2896,
+       2577, 95,
+       2583, 95,
+       2584, 95,
+       2590, 95,
+       2591, 95,
+       2593, 95,
+       2604, 95,
+       2606, 522,
+       2614, 95,
+       2616, 522,
+       2624, 95,
+       2626, 522,
+       2634, 95,
+       2636, 522,
+       2638, 95,
+       2641, 95,
+       2652, 95,
+       2655, 95,
+       2659, 95,
+       2665, 95,
+       2669, 95,
+       2673, 95,
+       2679, 95,
+       2683, 95,
+       2687, 95,
+       2693, 95,
+       2697, 95,
+       2701, 95,
+       2707, 95,
+       2713, 95,
+       2732, 3100,
+       2754, 587,
+       2755, 587,
+       2756, 587,
+       2757, 587,
+       2764, 1530,
+       2765, 1530,
+       2766, 1530,
+       2767, 1530,
+       2768, 587,
+       2789, 522,
+       2816, 1387,
+       2817, 1387,
+       2818, 1387,
+       2822, 1387,
+       2826, 208,
+       2827, 208,
+       2828, 208,
+       2829, 208,
+       2831, 208,
+       2832, 208,
+       2850, 95,
+       2857, 2896,
+       2860, 3211,
+       2867, 1861,
+       2870, 522,
+       2897, 3228,
+       2907, 95,
+       2913, 95,
+       2916, 95,
+       2919, 95,
+       2923, 95,
+       2929, 95,
+       2933, 95,
+       2937, 95,
+       2943, 95,
+       2947, 95,
+       2951, 95,
+       2957, 95,
+       2961, 95,
+       2965, 95,
+       2971, 95,
+       2977, 95,
+       2985, 95,
+       2991, 95,
+       2992, 95,
+       2994, 95,
+       2999, 95,
+       3002, 95,
+       3009, 95,
+       3015, 95,
+       3016, 95,
+       3018, 95,
+       3023, 95,
+       3026, 95,
+       3033, 95,
+       3039, 95,
+       3040, 95,
+       3042, 95,
+       3047, 95,
+       3050, 95,
+       3057, 95,
+       3063, 95,
+       3064, 95,
+       3066, 95,
+       3071, 95,
+       3074, 95,
+       3138, 587,
+       3141, 587,
+       3144, 587,
+       3147, 587,
+       3152, 522,
+       3153, 208,
+       3184, 208,
+       3185, 208,
+       3188, 208,
+       3189, 208,
+       3190, 208,
+       3191, 208,
+       3206, 3510,
+       3208, 3228,
+       3212, 3519,
+       3240, 95,
+       3246, 95,
+       3247, 95,
+       3249, 95,
+       3254, 95,
+       3257, 95,
+       3264, 95,
+       3270, 95,
+       3271, 95,
+       3273, 95,
+       3278, 95,
+       3281, 95,
+       3288, 95,
+       3294, 95,
+       3295, 95,
+       3297, 95,
+       3302, 95,
+       3305, 95,
+       3312, 95,
+       3318, 95,
+       3319, 95,
+       3321, 95,
+       3326, 95,
+       3329, 95,
+       3343, 95,
+       3349, 95,
+       3352, 95,
+       3357, 95,
+       3362, 95,
+       3368, 95,
+       3371, 95,
+       3376, 95,
+       3381, 95,
+       3387, 95,
+       3390, 95,
+       3395, 95,
+       3400, 95,
+       3406, 95,
+       3409, 95,
+       3414, 95,
+       3451, 587,
+       3454, 587,
+       3457, 587,
+       3460, 587,
+       3472, 522,
+       3488, 1387,
+       3498, 208,
+       3499, 208,
+       3537, 95,
+       3543, 95,
+       3546, 95,
+       3551, 95,
+       3556, 95,
+       3562, 95,
+       3565, 95,
+       3570, 95,
+       3575, 95,
+       3581, 95,
+       3584, 95,
+       3589, 95,
+       3594, 95,
+       3600, 95,
+       3603, 95,
+       3608, 95,
+       3740, 522,
+       3928, 1861
 };
 static int parser_goto_row223[] = {
-       1,
-       -1, 898
-};
-static int parser_goto_row224[] = {
-       212,
-       -1, 196,
-       13, 83,
-       27, 83,
-       31, 155,
-       33, 83,
-       37, 83,
-       55, 155,
-       98, 83,
-       125, 155,
-       159, 83,
-       167, 83,
-       203, 396,
-       211, 396,
-       213, 453,
-       242, 83,
-       254, 155,
-       256, 155,
-       257, 155,
-       258, 155,
-       259, 155,
-       280, 155,
-       281, 396,
-       349, 396,
-       389, 83,
-       390, 396,
-       403, 396,
-       476, 683,
-       481, 83,
-       483, 692,
-       506, 155,
-       507, 155,
-       518, 396,
-       528, 155,
-       530, 155,
-       531, 155,
-       532, 396,
-       533, 155,
-       534, 155,
-       535, 155,
-       536, 155,
-       537, 155,
-       538, 155,
-       539, 155,
-       540, 155,
-       541, 155,
-       542, 155,
-       543, 155,
-       544, 155,
-       545, 155,
-       546, 155,
-       547, 155,
-       548, 155,
-       549, 155,
-       550, 155,
-       551, 754,
-       555, 83,
-       557, 396,
-       562, 83,
-       578, 396,
-       597, 802,
-       601, 83,
-       604, 83,
-       621, 396,
-       622, 396,
-       628, 396,
-       656, 851,
-       657, 851,
-       685, 396,
-       687, 155,
-       689, 155,
-       721, 754,
-       727, 155,
-       757, 83,
-       760, 83,
-       764, 945,
-       765, 83,
-       766, 83,
-       768, 83,
-       774, 802,
-       809, 396,
-       813, 969,
-       824, 83,
-       830, 396,
-       833, 987,
-       835, 453,
-       875, 155,
-       876, 155,
-       877, 155,
-       878, 155,
-       893, 1051,
-       913, 155,
-       914, 945,
-       916, 83,
-       918, 945,
-       928, 155,
-       936, 83,
-       962, 396,
-       981, 396,
-       994, 1170,
-       998, 1173,
-       1006, 396,
-       1009, 83,
-       1043, 155,
-       1044, 155,
-       1063, 83,
-       1070, 83,
-       1080, 396,
-       1084, 155,
-       1085, 155,
-       1086, 155,
-       1087, 83,
-       1091, 83,
-       1092, 155,
-       1093, 155,
-       1120, 453,
-       1142, 1170,
-       1143, 1170,
-       1144, 1170,
-       1145, 1170,
-       1182, 1348,
-       1186, 83,
-       1196, 1388,
-       1202, 396,
-       1227, 396,
-       1238, 945,
-       1241, 1421,
-       1246, 83,
-       1252, 155,
-       1253, 155,
-       1257, 396,
-       1282, 1170,
-       1283, 396,
-       1284, 1170,
-       1412, 945,
-       1414, 83,
-       1418, 155,
-       1419, 155,
-       1431, 453,
-       1443, 396,
-       1447, 396,
-       1454, 1170,
-       1456, 1170,
-       1457, 1170,
-       1458, 396,
-       1459, 1170,
-       1460, 1170,
-       1461, 1170,
-       1462, 1170,
-       1463, 1170,
-       1464, 1170,
-       1465, 1170,
-       1466, 1170,
-       1467, 1170,
-       1468, 1170,
-       1469, 1170,
-       1470, 1170,
-       1471, 1170,
-       1472, 1170,
-       1473, 1170,
-       1474, 1170,
-       1475, 1170,
-       1476, 1170,
-       1477, 1597,
-       1493, 683,
-       1503, 683,
-       1504, 396,
-       1505, 683,
-       1507, 683,
-       1513, 396,
-       1515, 453,
-       1535, 945,
-       1536, 945,
-       1537, 945,
-       1541, 945,
-       1545, 155,
-       1546, 155,
-       1547, 155,
-       1548, 155,
-       1554, 453,
-       1564, 1597,
-       1568, 1170,
-       1571, 396,
-       1603, 1348,
-       1621, 83,
-       1623, 396,
-       1635, 1715,
-       1644, 155,
-       1658, 155,
-       1659, 155,
-       1666, 1739,
-       1678, 1388,
-       1680, 396,
-       1687, 83,
-       1691, 83,
-       1699, 83,
-       1728, 945,
-       1752, 396,
-       1756, 83,
-       1762, 83,
-       1763, 83,
-       1766, 83,
-       1771, 83,
-       1774, 83,
-       1809, 396,
-       1811, 453,
-       1815, 396,
-       1817, 83,
-       1823, 83,
-       1828, 83,
-       1833, 83,
-       1862, 396,
-       1914, 1170
-};
-static int parser_goto_row225[] = {
-       84,
-       -1, 163,
+       267,
+       -1, 133,
        0, 21,
        3, 24,
        5, 21,
        18, 21,
        19, 21,
        20, 24,
-       22, 107,
-       25, 108,
+       22, 119,
+       25, 120,
        28, 21,
        29, 21,
        30, 24,
-       33, 24,
-       37, 24,
-       64, 24,
-       94, 21,
-       95, 24,
-       99, 24,
-       104, 24,
-       105, 24,
-       111, 21,
-       112, 24,
-       114, 24,
-       164, 337,
-       243, 24,
-       265, 24,
-       271, 24,
-       274, 24,
-       331, 24,
-       339, 24,
-       389, 24,
-       554, 24,
-       556, 24,
-       563, 24,
-       601, 24,
-       764, 24,
-       765, 24,
-       768, 24,
-       824, 24,
-       865, 24,
-       914, 24,
-       916, 24,
-       918, 24,
-       1009, 24,
-       1020, 24,
-       1024, 21,
-       1087, 24,
-       1089, 24,
-       1091, 24,
-       1175, 24,
-       1184, 24,
-       1186, 24,
-       1238, 24,
-       1246, 24,
-       1248, 24,
-       1332, 24,
-       1349, 24,
-       1408, 24,
-       1412, 24,
-       1499, 24,
-       1535, 24,
-       1536, 24,
-       1537, 24,
-       1541, 24,
-       1610, 24,
-       1621, 24,
+       41, 24,
+       50, 24,
+       76, 24,
+       106, 21,
+       107, 24,
+       111, 24,
+       116, 24,
+       117, 24,
+       127, 21,
+       128, 24,
+       130, 24,
+       134, 355,
+       305, 24,
+       328, 24,
+       338, 24,
+       348, 24,
+       437, 24,
+       460, 24,
+       515, 24,
+       599, 24,
+       660, 24,
+       735, 24,
+       736, 24,
+       738, 24,
+       761, 24,
+       807, 24,
+       879, 24,
+       883, 21,
+       928, 24,
+       940, 21,
+       944, 24,
+       946, 24,
+       1001, 24,
+       1023, 24,
+       1036, 24,
+       1041, 24,
+       1046, 24,
+       1051, 24,
+       1052, 24,
+       1053, 24,
+       1056, 24,
+       1129, 24,
+       1228, 24,
+       1238, 21,
+       1252, 21,
+       1284, 24,
+       1291, 24,
+       1296, 24,
+       1301, 24,
+       1306, 24,
+       1318, 24,
+       1324, 24,
+       1328, 24,
+       1334, 24,
+       1338, 24,
+       1344, 24,
+       1348, 24,
+       1354, 24,
+       1356, 24,
+       1358, 24,
+       1360, 24,
+       1497, 24,
+       1602, 21,
+       1635, 24,
+       1641, 24,
+       1645, 24,
+       1651, 24,
+       1655, 24,
+       1661, 24,
+       1665, 24,
+       1671, 24,
+       1678, 24,
        1687, 24,
-       1691, 24,
-       1697, 24,
-       1699, 24,
-       1728, 24,
-       1756, 24,
-       1762, 24,
-       1763, 24,
-       1766, 24,
-       1771, 24,
-       1774, 24,
-       1778, 24,
-       1817, 24,
-       1823, 24,
-       1825, 24,
-       1828, 24,
-       1833, 24,
-       1870, 24
-};
-static int parser_goto_row226[] = {
-       81,
-       -1, 164,
+       1696, 24,
+       1705, 24,
+       1738, 24,
+       1740, 24,
+       1742, 24,
+       1865, 24,
+       1871, 24,
+       1885, 24,
+       1917, 24,
+       1923, 24,
+       1925, 24,
+       2044, 24,
+       2053, 24,
+       2062, 24,
+       2071, 24,
+       2077, 24,
+       2107, 24,
+       2116, 24,
+       2118, 24,
+       2235, 24,
+       2238, 24,
+       2244, 24,
+       2245, 24,
+       2249, 24,
+       2281, 24,
+       2287, 24,
+       2290, 24,
+       2301, 24,
+       2311, 24,
+       2321, 24,
+       2331, 24,
+       2335, 24,
+       2338, 24,
+       2463, 24,
+       2465, 24,
+       2467, 24,
+       2469, 24,
+       2471, 24,
+       2472, 24,
+       2476, 24,
+       2577, 24,
+       2583, 24,
+       2584, 24,
+       2590, 24,
+       2591, 24,
+       2593, 24,
+       2604, 24,
+       2614, 24,
+       2624, 24,
+       2634, 24,
+       2638, 24,
+       2641, 24,
+       2649, 24,
+       2652, 24,
+       2655, 24,
+       2659, 24,
+       2665, 24,
+       2669, 24,
+       2673, 24,
+       2679, 24,
+       2683, 24,
+       2687, 24,
+       2693, 24,
+       2697, 24,
+       2701, 24,
+       2707, 24,
+       2713, 24,
+       2798, 24,
+       2800, 24,
+       2802, 24,
+       2804, 24,
+       2808, 24,
+       2810, 24,
+       2812, 24,
+       2814, 24,
+       2816, 24,
+       2817, 24,
+       2818, 24,
+       2822, 24,
+       2907, 24,
+       2913, 24,
+       2916, 24,
+       2919, 24,
+       2923, 24,
+       2929, 24,
+       2933, 24,
+       2937, 24,
+       2943, 24,
+       2947, 24,
+       2951, 24,
+       2957, 24,
+       2961, 24,
+       2965, 24,
+       2971, 24,
+       2977, 24,
+       2985, 24,
+       2991, 24,
+       2992, 24,
+       2994, 24,
+       2999, 24,
+       3002, 24,
+       3009, 24,
+       3015, 24,
+       3016, 24,
+       3018, 24,
+       3023, 24,
+       3026, 24,
+       3033, 24,
+       3039, 24,
+       3040, 24,
+       3042, 24,
+       3047, 24,
+       3050, 24,
+       3057, 24,
+       3063, 24,
+       3064, 24,
+       3066, 24,
+       3071, 24,
+       3074, 24,
+       3157, 24,
+       3159, 24,
+       3161, 24,
+       3163, 24,
+       3202, 21,
+       3240, 24,
+       3246, 24,
+       3247, 24,
+       3249, 24,
+       3254, 24,
+       3257, 24,
+       3264, 24,
+       3270, 24,
+       3271, 24,
+       3273, 24,
+       3278, 24,
+       3281, 24,
+       3288, 24,
+       3294, 24,
+       3295, 24,
+       3297, 24,
+       3302, 24,
+       3305, 24,
+       3312, 24,
+       3318, 24,
+       3319, 24,
+       3321, 24,
+       3326, 24,
+       3329, 24,
+       3343, 24,
+       3349, 24,
+       3352, 24,
+       3357, 24,
+       3362, 24,
+       3368, 24,
+       3371, 24,
+       3376, 24,
+       3381, 24,
+       3387, 24,
+       3390, 24,
+       3395, 24,
+       3400, 24,
+       3406, 24,
+       3409, 24,
+       3414, 24,
+       3488, 24,
+       3506, 21,
+       3537, 24,
+       3543, 24,
+       3546, 24,
+       3551, 24,
+       3556, 24,
+       3562, 24,
+       3565, 24,
+       3570, 24,
+       3575, 24,
+       3581, 24,
+       3584, 24,
+       3589, 24,
+       3594, 24,
+       3600, 24,
+       3603, 24,
+       3608, 24
+};
+static int parser_goto_row224[] = {
+       264,
+       -1, 134,
        0, 22,
        3, 25,
        5, 22,
@@ -26546,77 +53039,260 @@ static int parser_goto_row226[] = {
        28, 22,
        29, 22,
        30, 25,
-       33, 25,
-       37, 25,
-       64, 25,
-       94, 22,
-       95, 25,
-       99, 25,
-       104, 25,
-       105, 25,
-       111, 22,
-       112, 25,
-       114, 25,
-       243, 25,
-       265, 25,
-       271, 25,
-       274, 25,
-       331, 25,
-       339, 25,
-       389, 25,
-       554, 25,
-       556, 25,
-       563, 25,
-       601, 25,
-       764, 25,
-       765, 25,
-       768, 25,
-       824, 25,
-       865, 25,
-       914, 25,
-       916, 25,
-       918, 25,
-       1009, 25,
-       1020, 25,
-       1024, 22,
-       1087, 25,
-       1089, 25,
-       1091, 25,
-       1175, 25,
-       1184, 25,
-       1186, 25,
-       1238, 25,
-       1246, 25,
-       1248, 25,
-       1332, 25,
-       1349, 25,
-       1408, 25,
-       1412, 25,
-       1499, 25,
-       1535, 25,
-       1536, 25,
-       1537, 25,
-       1541, 25,
-       1610, 25,
-       1621, 25,
+       41, 25,
+       50, 25,
+       76, 25,
+       106, 22,
+       107, 25,
+       111, 25,
+       116, 25,
+       117, 25,
+       127, 22,
+       128, 25,
+       130, 25,
+       305, 25,
+       328, 25,
+       338, 25,
+       348, 25,
+       437, 25,
+       460, 25,
+       515, 25,
+       599, 25,
+       660, 25,
+       735, 25,
+       736, 25,
+       738, 25,
+       761, 25,
+       807, 25,
+       879, 25,
+       883, 22,
+       928, 25,
+       940, 22,
+       944, 25,
+       946, 25,
+       1001, 25,
+       1023, 25,
+       1036, 25,
+       1041, 25,
+       1046, 25,
+       1051, 25,
+       1052, 25,
+       1053, 25,
+       1056, 25,
+       1129, 25,
+       1228, 25,
+       1238, 22,
+       1252, 22,
+       1284, 25,
+       1291, 25,
+       1296, 25,
+       1301, 25,
+       1306, 25,
+       1318, 25,
+       1324, 25,
+       1328, 25,
+       1334, 25,
+       1338, 25,
+       1344, 25,
+       1348, 25,
+       1354, 25,
+       1356, 25,
+       1358, 25,
+       1360, 25,
+       1497, 25,
+       1602, 22,
+       1635, 25,
+       1641, 25,
+       1645, 25,
+       1651, 25,
+       1655, 25,
+       1661, 25,
+       1665, 25,
+       1671, 25,
+       1678, 25,
        1687, 25,
-       1691, 25,
-       1697, 25,
-       1699, 25,
-       1728, 25,
-       1756, 25,
-       1762, 25,
-       1763, 25,
-       1766, 25,
-       1771, 25,
-       1774, 25,
-       1778, 25,
-       1817, 25,
-       1823, 25,
-       1825, 25,
-       1828, 25,
-       1833, 25,
-       1870, 25
+       1696, 25,
+       1705, 25,
+       1738, 25,
+       1740, 25,
+       1742, 25,
+       1865, 25,
+       1871, 25,
+       1885, 25,
+       1917, 25,
+       1923, 25,
+       1925, 25,
+       2044, 25,
+       2053, 25,
+       2062, 25,
+       2071, 25,
+       2077, 25,
+       2107, 25,
+       2116, 25,
+       2118, 25,
+       2235, 25,
+       2238, 25,
+       2244, 25,
+       2245, 25,
+       2249, 25,
+       2281, 25,
+       2287, 25,
+       2290, 25,
+       2301, 25,
+       2311, 25,
+       2321, 25,
+       2331, 25,
+       2335, 25,
+       2338, 25,
+       2463, 25,
+       2465, 25,
+       2467, 25,
+       2469, 25,
+       2471, 25,
+       2472, 25,
+       2476, 25,
+       2577, 25,
+       2583, 25,
+       2584, 25,
+       2590, 25,
+       2591, 25,
+       2593, 25,
+       2604, 25,
+       2614, 25,
+       2624, 25,
+       2634, 25,
+       2638, 25,
+       2641, 25,
+       2649, 25,
+       2652, 25,
+       2655, 25,
+       2659, 25,
+       2665, 25,
+       2669, 25,
+       2673, 25,
+       2679, 25,
+       2683, 25,
+       2687, 25,
+       2693, 25,
+       2697, 25,
+       2701, 25,
+       2707, 25,
+       2713, 25,
+       2798, 25,
+       2800, 25,
+       2802, 25,
+       2804, 25,
+       2808, 25,
+       2810, 25,
+       2812, 25,
+       2814, 25,
+       2816, 25,
+       2817, 25,
+       2818, 25,
+       2822, 25,
+       2907, 25,
+       2913, 25,
+       2916, 25,
+       2919, 25,
+       2923, 25,
+       2929, 25,
+       2933, 25,
+       2937, 25,
+       2943, 25,
+       2947, 25,
+       2951, 25,
+       2957, 25,
+       2961, 25,
+       2965, 25,
+       2971, 25,
+       2977, 25,
+       2985, 25,
+       2991, 25,
+       2992, 25,
+       2994, 25,
+       2999, 25,
+       3002, 25,
+       3009, 25,
+       3015, 25,
+       3016, 25,
+       3018, 25,
+       3023, 25,
+       3026, 25,
+       3033, 25,
+       3039, 25,
+       3040, 25,
+       3042, 25,
+       3047, 25,
+       3050, 25,
+       3057, 25,
+       3063, 25,
+       3064, 25,
+       3066, 25,
+       3071, 25,
+       3074, 25,
+       3157, 25,
+       3159, 25,
+       3161, 25,
+       3163, 25,
+       3202, 22,
+       3240, 25,
+       3246, 25,
+       3247, 25,
+       3249, 25,
+       3254, 25,
+       3257, 25,
+       3264, 25,
+       3270, 25,
+       3271, 25,
+       3273, 25,
+       3278, 25,
+       3281, 25,
+       3288, 25,
+       3294, 25,
+       3295, 25,
+       3297, 25,
+       3302, 25,
+       3305, 25,
+       3312, 25,
+       3318, 25,
+       3319, 25,
+       3321, 25,
+       3326, 25,
+       3329, 25,
+       3343, 25,
+       3349, 25,
+       3352, 25,
+       3357, 25,
+       3362, 25,
+       3368, 25,
+       3371, 25,
+       3376, 25,
+       3381, 25,
+       3387, 25,
+       3390, 25,
+       3395, 25,
+       3400, 25,
+       3406, 25,
+       3409, 25,
+       3414, 25,
+       3488, 25,
+       3506, 22,
+       3537, 25,
+       3543, 25,
+       3546, 25,
+       3551, 25,
+       3556, 25,
+       3562, 25,
+       3565, 25,
+       3570, 25,
+       3575, 25,
+       3581, 25,
+       3584, 25,
+       3589, 25,
+       3594, 25,
+       3600, 25,
+       3603, 25,
+       3608, 25
 };
 
 const int* const parser_goto_table[] = {
@@ -26843,7 +53519,5 @@ const int* const parser_goto_table[] = {
        parser_goto_row221,
        parser_goto_row222,
        parser_goto_row223,
-       parser_goto_row224,
-       parser_goto_row225,
-       parser_goto_row226
+       parser_goto_row224
 };
index 48a4049..970d8df 100644 (file)
@@ -14,7 +14,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
 # Rapid type analysis on the AST
 #
 # Rapid type analysis is an analyse that aproximates the set of live classes
@@ -700,6 +699,13 @@ redef class ASendExpr
        end
 end
 
+redef class ACallrefExpr
+        redef fun accept_rapid_type_visitor(v)
+        do
+                super
+                v.add_type(mtype.as(MClassType))
+        end
+end
 
 redef class ASendReassignFormExpr
        redef fun accept_rapid_type_visitor(v)
index 3374951..de85c22 100644 (file)
@@ -268,6 +268,11 @@ redef class AParam
        var variable: nullable Variable
        redef fun accept_scope_visitor(v)
        do
+               if variable != null then
+                       v.register_variable(self.n_id, variable.as(not null))
+                       return
+               end
+
                super
                var nid = self.n_id
                var variable = new Variable(nid.text)
@@ -482,7 +487,7 @@ redef class ACallFormExpr
                        var variable = v.search_variable(name)
                        if variable != null then
                                var n: AExpr
-                               if not n_args.n_exprs.is_empty or n_args isa AParExprs then
+                               if not n_args.n_exprs.is_empty or n_args isa AParExprs or self isa ACallrefExpr then
                                        v.error(self, "Error: `{name}` is a variable, not a method.")
                                        return
                                end
@@ -523,3 +528,11 @@ redef class ACallReassignExpr
                return new AVarReassignExpr.init_avarreassignexpr(n_qid.n_id, n_assign_op, n_value)
        end
 end
+
+redef class ALambdaExpr
+       redef fun accept_scope_visitor(v)
+       do
+               # TODO
+               return
+       end
+end
index 3463b07..b9acd5e 100644 (file)
@@ -181,7 +181,6 @@ private class TypeVisitor
                return self.visit_expr_subtype(nexpr, self.type_bool(nexpr))
        end
 
-
        fun check_expr_cast(node: ANode, nexpr: AExpr, ntype: AType): nullable MType
        do
                var sub = nexpr.mtype
@@ -297,7 +296,13 @@ private class TypeVisitor
                return mclass.mclass_type
        end
 
-       fun get_method(node: ANode, recvtype: MType, name: String, recv_is_self: Bool): nullable CallSite
+       # Construction of a specific callsite according to the current context.
+       # Three entry points exist to create a callsite based on knowledge.
+       # The `build_callsite_by_name` is a top entry point, the method find the mpropdefs to call by the name of this.
+       # see `build_callsite_by_property` and `build_callsite_by_propdef` for more detail.
+       # If you already know the mpropdef to call use directly the `get_method_by_propdef` method
+       # If you just know the mproperty use the `build_callsite_by_property` method to display error if no `mpropdef` is found in the context
+       fun build_callsite_by_name(node: ANode, recvtype: MType, name: String, recv_is_self: Bool): nullable CallSite
        do
                var unsafe_type = self.anchor_to(recvtype)
 
@@ -327,23 +332,37 @@ private class TypeVisitor
 
                assert mproperty isa MMethod
 
+               return build_callsite_by_property(node, recvtype, mproperty, recv_is_self)
+       end
+
+       # The `build_callsite_by_property` finds the mpropdefs to call by the `MMethod`.
+       # If the mpropdef is found in the context it builds a new `Callsite`.
+       fun build_callsite_by_property(node: ANode, recvtype: MType, mproperty: MMethod, recv_is_self: Bool): nullable CallSite
+       do
+               var unsafe_type = self.anchor_to(recvtype)
+
+               if recvtype isa MNullType then
+                       var objclass = get_mclass(node, "Object")
+                       if objclass == null then return null # Forward error
+                       unsafe_type = objclass.mclass_type
+               end
                # `null` only accepts some methods of object.
                if recvtype isa MNullType and not mproperty.is_null_safe then
-                       self.error(node, "Error: method `{name}` called on `null`.")
+                       self.error(node, "Error: method `{mproperty.name}` called on `null`.")
                        return null
                else if unsafe_type isa MNullableType and not mproperty.is_null_safe then
                        modelbuilder.advice(node, "call-on-nullable", "Warning: method call on a nullable receiver `{recvtype}`.")
                end
 
                if is_toplevel_context and recv_is_self and not mproperty.is_toplevel then
-                       error(node, "Error: `{name}` is not a top-level method, thus need a receiver.")
+                       error(node, "Error: `{mproperty.name}` is not a top-level method, thus need a receiver.")
                end
                if not recv_is_self and mproperty.is_toplevel then
-                       error(node, "Error: cannot call `{name}`, a top-level method, with a receiver.")
+                       error(node, "Error: cannot call `{mproperty.name}`, a top-level method, with a receiver.")
                end
 
                if mproperty.visibility == protected_visibility and not recv_is_self and self.mmodule.visibility_for(mproperty.intro_mclassdef.mmodule) < intrude_visibility and not modelbuilder.toolcontext.opt_ignore_visibility.value then
-                       self.modelbuilder.error(node, "Error: method `{name}` is protected and can only accessed by `self`.")
+                       self.modelbuilder.error(node, "Error: method `{mproperty.name}` is protected and can only accessed by `self`.")
                        return null
                end
 
@@ -351,25 +370,31 @@ private class TypeVisitor
                if info != null and self.mpropdef.mproperty.deprecation == null then
                        var mdoc = info.mdoc
                        if mdoc != null then
-                               self.modelbuilder.warning(node, "deprecated-method", "Deprecation Warning: method `{name}` is deprecated: {mdoc.content.first}")
+                               self.modelbuilder.warning(node, "deprecated-method", "Deprecation Warning: method `{mproperty.name}` is deprecated: {mdoc.content.first}")
                        else
-                               self.modelbuilder.warning(node, "deprecated-method", "Deprecation Warning: method `{name}` is deprecated.")
+                               self.modelbuilder.warning(node, "deprecated-method", "Deprecation Warning: method `{mproperty.name}` is deprecated.")
                        end
                end
 
                var propdefs = mproperty.lookup_definitions(self.mmodule, unsafe_type)
                var mpropdef
                if propdefs.length == 0 then
-                       self.modelbuilder.error(node, "Type Error: no definition found for property `{name}` in `{unsafe_type}`.")
-                       return null
+                       self.modelbuilder.error(node, "Type Error: no definition found for property `{mproperty.name}` in `{unsafe_type}`.")
+                       abort
+                       #return null
                else if propdefs.length == 1 then
                        mpropdef = propdefs.first
                else
-                       self.modelbuilder.warning(node, "property-conflict", "Warning: conflicting property definitions for property `{name}` in `{unsafe_type}`: {propdefs.join(" ")}")
+                       self.modelbuilder.warning(node, "property-conflict", "Warning: conflicting property definitions for property `{mproperty.name}` in `{unsafe_type}`: {propdefs.join(" ")}")
                        mpropdef = mproperty.intro
                end
 
+               return build_callsite_by_propdef(node, recvtype, mpropdef, recv_is_self)
+       end
 
+       # The `build_callsite_by_propdef` builds the callsite directly with the `mprodef` passed in argument.
+       fun build_callsite_by_propdef(node: ANode, recvtype: MType, mpropdef: MMethodDef, recv_is_self: Bool): nullable CallSite
+       do
                var msignature = mpropdef.new_msignature or else mpropdef.msignature
                if msignature == null then return null # skip error
                msignature = resolve_for(msignature, recvtype, recv_is_self).as(MSignature)
@@ -386,19 +411,18 @@ private class TypeVisitor
                        end
                end
 
-               var callsite = new CallSite(node.hot_location, recvtype, mmodule, anchor, recv_is_self, mproperty, mpropdef, msignature, erasure_cast)
+               var callsite = new CallSite(node.hot_location, recvtype, mmodule, anchor, recv_is_self, mpropdef.mproperty, mpropdef, msignature, erasure_cast)
                return callsite
        end
 
-       fun try_get_method(node: ANode, recvtype: MType, name: String, recv_is_self: Bool): nullable CallSite
+       fun try_build_callsite_by_name(node: ANode, recvtype: MType, name: String, recv_is_self: Bool): nullable CallSite
        do
                var unsafe_type = self.anchor_to(recvtype)
                var mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
                if mproperty == null then return null
-               return get_method(node, recvtype, name, recv_is_self)
+               return build_callsite_by_name(node, recvtype, name, recv_is_self)
        end
 
-
        # Visit the expressions of args and check their conformity with the corresponding type in signature
        # The point of this method is to handle varargs correctly
        # Note: The signature must be correctly adapted
@@ -419,7 +443,6 @@ private class TypeVisitor
                        # Other cases are managed later
                end
 
-
                #debug("CALL {unsafe_type}.{msignature}")
 
                # Associate each parameter to a position in the arguments
@@ -1113,7 +1136,7 @@ redef class AReassignFormExpr
 
                self.read_type = readtype
 
-               var callsite = v.get_method(self.n_assign_op, readtype, reassign_name, false)
+               var callsite = v.build_callsite_by_name(self.n_assign_op, readtype, reassign_name, false)
                if callsite == null then return null # Skip error
                self.reassign_callsite = callsite
 
@@ -1151,7 +1174,6 @@ redef class AVarReassignExpr
        end
 end
 
-
 redef class AContinueExpr
        redef fun accept_typing(v)
        do
@@ -1318,7 +1340,7 @@ redef class AForGroup
                if objcla == null then return
 
                # check iterator method
-               var itdef = v.get_method(self, mtype, "iterator", n_expr isa ASelfExpr)
+               var itdef = v.build_callsite_by_name(self, mtype, "iterator", n_expr isa ASelfExpr)
                if itdef == null then
                        v.error(self, "Type Error: `for` expects a type providing an `iterator` method, got `{mtype}`.")
                        return
@@ -1375,31 +1397,31 @@ redef class AForGroup
                self.coltype = mtype.as(MClassType)
 
                # get methods is_ok, next, item
-               var ikdef = v.get_method(self, ittype, "is_ok", false)
+               var ikdef = v.build_callsite_by_name(self, ittype, "is_ok", false)
                if ikdef == null then
                        v.error(self, "Type Error: `for` expects a method `is_ok` in type `{ittype}`.")
                        return
                end
                self.method_is_ok = ikdef
 
-               var itemdef = v.get_method(self, ittype, "item", false)
+               var itemdef = v.build_callsite_by_name(self, ittype, "item", false)
                if itemdef == null then
                        v.error(self, "Type Error: `for` expects a method `item` in type `{ittype}`.")
                        return
                end
                self.method_item = itemdef
 
-               var nextdef = v.get_method(self, ittype, "next", false)
+               var nextdef = v.build_callsite_by_name(self, ittype, "next", false)
                if nextdef == null then
                        v.error(self, "Type Error: `for` expects a method `next` in type {ittype}.")
                        return
                end
                self.method_next = nextdef
 
-               self.method_finish = v.try_get_method(self, ittype, "finish", false)
+               self.method_finish = v.try_build_callsite_by_name(self, ittype, "finish", false)
 
                if is_map then
-                       var keydef = v.get_method(self, ittype, "key", false)
+                       var keydef = v.build_callsite_by_name(self, ittype, "key", false)
                        if keydef == null then
                                v.error(self, "Type Error: `for` expects a method `key` in type `{ittype}`.")
                                return
@@ -1412,12 +1434,12 @@ redef class AForGroup
                        var vtype = variable.declared_type.as(not null)
 
                        if n_expr isa AOrangeExpr then
-                               self.method_lt = v.get_method(self, vtype, "<", false)
+                               self.method_lt = v.build_callsite_by_name(self, vtype, "<", false)
                        else
-                               self.method_lt = v.get_method(self, vtype, "<=", false)
+                               self.method_lt = v.build_callsite_by_name(self, vtype, "<=", false)
                        end
 
-                       self.method_successor = v.get_method(self, vtype, "successor", false)
+                       self.method_successor = v.build_callsite_by_name(self, vtype, "successor", false)
                end
        end
 end
@@ -1431,8 +1453,8 @@ redef class AWithExpr
                var mtype = v.visit_expr(n_expr)
                if mtype == null then return
 
-               method_start = v.get_method(self, mtype, "start", n_expr isa ASelfExpr)
-               method_finish = v.get_method(self, mtype, "finish", n_expr isa ASelfExpr)
+               method_start = v.build_callsite_by_name(self, mtype, "start", n_expr isa ASelfExpr)
+               method_finish = v.build_callsite_by_name(self, mtype, "finish", n_expr isa ASelfExpr)
 
                v.visit_stmt(n_block)
                self.mtype = n_block.mtype
@@ -1477,7 +1499,6 @@ redef class AAndExpr
        end
 end
 
-
 redef class ANotExpr
        redef fun accept_typing(v)
        do
@@ -1605,10 +1626,10 @@ redef class AugmentedStringFormExpr
                var mclass = v.get_mclass(self, "String")
                if mclass == null then return # Forward error
                if is_bytestring then
-                       to_bytes_with_copy = v.get_method(self, v.mmodule.c_string_type, "to_bytes_with_copy", false)
+                       to_bytes_with_copy = v.build_callsite_by_name(self, v.mmodule.c_string_type, "to_bytes_with_copy", false)
                        mclass = v.get_mclass(self, "Bytes")
                else if is_re then
-                       to_re = v.get_method(self, mclass.mclass_type, "to_re", false)
+                       to_re = v.build_callsite_by_name(self, mclass.mclass_type, "to_re", false)
                        for i in suffix.chars do
                                mclass = v.get_mclass(self, "Regex")
                                if mclass == null then
@@ -1618,13 +1639,13 @@ redef class AugmentedStringFormExpr
                                var service = ""
                                if i == 'i' then
                                        service = "ignore_case="
-                                       ignore_case = v.get_method(self, mclass.mclass_type, service, false)
+                                       ignore_case = v.build_callsite_by_name(self, mclass.mclass_type, service, false)
                                else if i == 'm' then
                                        service = "newline="
-                                       newline = v.get_method(self, mclass.mclass_type, service, false)
+                                       newline = v.build_callsite_by_name(self, mclass.mclass_type, service, false)
                                else if i == 'b' then
                                        service = "extended="
-                                       extended = v.get_method(self, mclass.mclass_type, service, false)
+                                       extended = v.build_callsite_by_name(self, mclass.mclass_type, service, false)
                                else
                                        v.error(self, "Type Error: Unrecognized suffix {i} in prefixed Regex")
                                        abort
@@ -1718,8 +1739,8 @@ redef class AArrayExpr
                if mclass == null then return # Forward error
                var array_mtype = mclass.get_mtype([mtype])
 
-               with_capacity_callsite = v.get_method(self, array_mtype, "with_capacity", false)
-               push_callsite = v.get_method(self, array_mtype, "push", false)
+               with_capacity_callsite = v.build_callsite_by_name(self, array_mtype, "with_capacity", false)
+               push_callsite = v.build_callsite_by_name(self, array_mtype, "push", false)
 
                self.mtype = array_mtype
        end
@@ -1753,9 +1774,9 @@ redef class ARangeExpr
                # get the constructor
                var callsite
                if self isa ACrangeExpr then
-                       callsite = v.get_method(self, mtype, "init", false)
+                       callsite = v.build_callsite_by_name(self, mtype, "init", false)
                else if self isa AOrangeExpr then
-                       callsite = v.get_method(self, mtype, "without_last", false)
+                       callsite = v.build_callsite_by_name(self, mtype, "without_last", false)
                else
                        abort
                end
@@ -1903,6 +1924,11 @@ redef class ASendExpr
        # The property invoked by the send.
        var callsite: nullable CallSite
 
+       # Is self a safe call (with `x?.foo`)?
+       # If so and the receiver is null, then the arguments won't be evaluated
+       # and the call skipped (replaced with null).
+       var is_safe: Bool = false
+
        redef fun bad_expr_message(child)
        do
                if child == self.n_expr then
@@ -1915,6 +1941,13 @@ redef class ASendExpr
        do
                var nrecv = self.n_expr
                var recvtype = v.visit_expr(nrecv)
+
+               if nrecv isa ASafeExpr then
+                       # Has the receiver the form `x?.foo`?
+                       # For parsing "reasons" the `?` is in the receiver node, not the call node.
+                       is_safe = true
+               end
+
                var name = self.property_name
                var node = self.property_node
 
@@ -1930,7 +1963,7 @@ redef class ASendExpr
                                var systype = sysclass.mclass_type
                                mproperty = v.try_get_mproperty_by_name2(node, systype, name)
                                if mproperty != null then
-                                       callsite = v.get_method(node, systype, name, false)
+                                       callsite = v.build_callsite_by_name(node, systype, name, false)
                                        if callsite == null then return # Forward error
                                        # Update information, we are looking at `sys` now, not `self`
                                        nrecv.is_sys = true
@@ -1942,7 +1975,7 @@ redef class ASendExpr
                end
                if callsite == null then
                        # If still nothing, just exit
-                       callsite = v.get_method(node, recvtype, name, nrecv isa ASelfExpr)
+                       callsite = v.build_callsite_by_name(node, recvtype, name, nrecv isa ASelfExpr)
                        if callsite == null then return
                end
 
@@ -1951,7 +1984,9 @@ redef class ASendExpr
 
                var args = compute_raw_arguments
 
-               callsite.check_signature(v, node, args)
+                if not self isa ACallrefExpr then
+                       callsite.check_signature(v, node, args)
+                end
 
                if callsite.mproperty.is_init then
                        var vmpropdef = v.mpropdef
@@ -1965,6 +2000,10 @@ redef class ASendExpr
 
                var ret = msignature.return_mtype
                if ret != null then
+                       if is_safe then
+                               # A safe receiver makes that the call is not executed and returns null
+                               ret = ret.as_nullable
+                       end
                        self.mtype = ret
                else
                        self.is_typed = true
@@ -2030,7 +2069,6 @@ redef class AUnaryopExpr
        redef fun compute_raw_arguments do return new Array[AExpr]
 end
 
-
 redef class ACallExpr
        redef fun property_name do return n_qid.n_id.text
        redef fun property_node do return n_qid
@@ -2076,7 +2114,7 @@ redef class ASendReassignFormExpr
                if recvtype == null then return # Forward error
 
                var for_self = self.n_expr isa ASelfExpr
-               var callsite = v.get_method(node, recvtype, name, for_self)
+               var callsite = v.build_callsite_by_name(node, recvtype, name, for_self)
 
                if callsite == null then return
                self.callsite = callsite
@@ -2091,7 +2129,7 @@ redef class ASendReassignFormExpr
                        return
                end
 
-               var wcallsite = v.get_method(node, recvtype, name + "=", self.n_expr isa ASelfExpr)
+               var wcallsite = v.build_callsite_by_name(node, recvtype, name + "=", self.n_expr isa ASelfExpr)
                if wcallsite == null then return
                self.write_callsite = wcallsite
 
@@ -2123,6 +2161,77 @@ redef class AInitExpr
        redef fun compute_raw_arguments do return n_args.to_a
 end
 
+redef class ACallrefExpr
+       redef fun property_name do return n_qid.n_id.text
+       redef fun property_node do return n_qid
+       redef fun compute_raw_arguments do return n_args.to_a
+
+       redef fun accept_typing(v)
+       do
+               super # do the job as if it was a real call
+               var res = callsite.mproperty
+
+                var msignature = callsite.mpropdef.msignature
+                var recv = callsite.recv
+                assert msignature != null
+                var arity = msignature.mparameters.length
+
+                var routine_type_name = "ProcRef"
+                if msignature.return_mtype != null then
+                        routine_type_name = "FunRef"
+                end
+
+                var target_routine_class = "{routine_type_name}{arity}"
+                var routine_mclass = v.get_mclass(self, target_routine_class)
+
+                if routine_mclass == null then
+                        v.error(self, "Error: missing functional types, try `import functional`")
+                        return
+                end
+
+                var types_list = new Array[MType]
+                for param in msignature.mparameters do
+                        if param.is_vararg then
+                                types_list.push(v.mmodule.array_type(param.mtype))
+                        else
+                                types_list.push(param.mtype)
+                        end
+                end
+                if msignature.return_mtype != null then
+                        types_list.push(msignature.return_mtype.as(not null))
+                end
+
+                # Why we need an anchor :
+                #
+                # ~~~~nitish
+                # class A[E]
+                #       def toto(x: E) do print "{x}"
+                # end
+                #
+                # var a = new A[Int]
+                # var f = &a.toto # without anchor : ProcRef1[E]
+                #                # with anchor : ProcRef[Int]
+                # ~~~~
+               # However, we can only anchor if we can resolve every formal
+               # parameter, here's an example where we can't.
+               # ~~~~nitish
+               # class A[E]
+               #       fun bar: A[E] do return self
+               #       fun foo: Fun0[A[E]] do return &bar # here we can't anchor
+               # end
+               # var f1 = a1.foo # when this expression will be evaluated,
+               #                 # `a1` will anchor `&bar` returned by `foo`.
+               # print f1.call
+               # ~~~~
+               var routine_type = routine_mclass.get_mtype(types_list)
+               if not recv.need_anchor then
+                       routine_type = routine_type.anchor_to(v.mmodule, recv.as(MClassType))
+               end
+                is_typed = true
+               self.mtype = routine_type
+       end
+end
+
 redef class AExprs
        fun to_a: Array[AExpr] do return self.n_exprs.to_a
 end
@@ -2314,7 +2423,7 @@ redef class ANewExpr
                        return
                end
 
-               var callsite = v.get_method(node, recvtype, name, false)
+               var callsite = v.build_callsite_by_name(node, recvtype, name, false)
                if callsite == null then return
 
                if not callsite.mproperty.is_new then
@@ -2407,7 +2516,6 @@ redef class AAttrExpr
        end
 end
 
-
 redef class AAttrAssignExpr
        redef fun accept_typing(v)
        do
@@ -2448,6 +2556,28 @@ redef class AIssetAttrExpr
        end
 end
 
+redef class ASafeExpr
+       redef fun accept_typing(v)
+       do
+               var mtype = v.visit_expr(n_expr)
+               if mtype == null then return # Skip error
+
+               if mtype isa MNullType then
+                       # While `null?.foo` is semantically well defined and should not execute `foo` and just return `null`,
+                       # currently `null.foo` is forbidden so it seems coherent to also forbid `null?.foo`
+                       v.modelbuilder.error(self, "Error: safe operator `?` on `null`.")
+                       return
+               end
+
+               self.mtype = mtype.as_notnull
+
+               if not v.can_be_null(mtype) then
+                       v.modelbuilder.warning(self, "useless-safe", "Warning: useless safe operator `?` on non-nullable value.")
+                       return
+               end
+       end
+end
+
 redef class AVarargExpr
        redef fun accept_typing(v)
        do
diff --git a/src/test_astbuilder.nit b/src/test_astbuilder.nit
new file mode 100644 (file)
index 0000000..e2f4b58
--- /dev/null
@@ -0,0 +1,118 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Program used to test the `clone` method of the astbuilder tool
+# Program use the nit interpreter to do his job. It take a nit file into parameter and replace the ast nodes by a clone.
+# After replace it run a basic interpretation.
+# When a new method `clone` is implemented you need to add a redefinition to test it.
+# When the number of method `clone` will increase its more practical to define the nodes to not clone.
+module test_astbuilder
+
+import nit
+import astbuilder
+
+redef class ModelBuilder
+       redef fun run_naive_interpreter(mainmodule: MModule, arguments: Array[String])
+       do
+               var clone_visitor = new CloneVisitor
+               for nmodule in self.nmodules do
+                       clone_visitor.enter_visit(nmodule)
+               end
+               super
+       end
+end
+
+private class CloneVisitor
+       super Visitor
+
+       redef fun visit(node)
+       do
+               # return when the node is an annotation to avoid the clonage
+               if node isa AAnnotations then return
+               node.do_cloneable(self)
+               node.visit_all(self)
+       end
+end
+
+redef class ANode
+       private fun do_cloneable(v: CloneVisitor)do end
+
+       # Create a new clone of `self`
+       fun replace_clone
+       do
+               var self_clone = self.clone
+               replace_with(self.clone)
+               self_clone.location = location
+               #Call the `validate` method to set correctly the parents and the location
+               self_clone.validate
+       end
+end
+
+# Implement the `do_cloeable` method for each Node were the method `clone` is defined in the astbuilder module
+
+redef class ASignature
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class AImplicitSelfExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class ASelfExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class AIntegerExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class ATrueExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class AFloatExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class AFalseExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
+
+redef class ACharExpr
+       redef fun do_cloneable(v)
+       do
+               replace_clone
+       end
+end
index 0797723..043e9ee 100644 (file)
@@ -405,12 +405,18 @@ class ToolContext
        # Option --stub-man
        var opt_stub_man = new OptionBool("Generate a stub manpage in pandoc markdown format", "--stub-man")
 
+       # Option --no-contract
+       var opt_no_contract = new OptionBool("Disable the contracts usage", "--no-contract")
+
+       # Option --full-contract
+       var opt_full_contract = new OptionBool("Enable all contracts usage", "--full-contract")
+
        # Verbose level
        var verbose_level: Int = 0
 
        init
        do
-               option_context.add_option(opt_warn, opt_warning, opt_quiet, opt_stop_on_first_error, opt_keep_going, opt_no_color, opt_log, opt_log_dir, opt_nit_dir, opt_help, opt_version, opt_set_dummy_tool, opt_verbose, opt_bash_completion, opt_stub_man)
+               option_context.add_option(opt_warn, opt_warning, opt_quiet, opt_stop_on_first_error, opt_keep_going, opt_no_color, opt_log, opt_log_dir, opt_nit_dir, opt_help, opt_version, opt_set_dummy_tool, opt_verbose, opt_bash_completion, opt_stub_man, opt_no_contract, opt_full_contract)
 
                # Hide some internal options
                opt_stub_man.hidden = true
diff --git a/tests/base_safe.nit b/tests/base_safe.nit
new file mode 100644 (file)
index 0000000..3e34c31
--- /dev/null
@@ -0,0 +1,51 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import core::kernel
+
+class A
+       fun foo(i: Int) do
+               'F'.output
+               i.output
+       end
+
+       fun bar(i: Int): A do
+               'B'.output
+               i.output
+               return self
+       end
+end
+
+fun test(a: nullable A) do
+       'a'.output
+       (a == null).output
+       a?.foo(1)
+
+       var r = a?.bar(2)
+       'r'.output
+       (r == null).output
+
+       a?.bar(10)?.bar(11)?.foo(12)
+       #alt2#a.bar(20).foo(21)
+       #alt3#a?.bar(20).foo(21)
+       #alt4#a.bar(20)?.foo(21)
+end
+
+var a = new A
+test(a)
+'\n'.output
+test(null)
+
+#alt1#a?.foo(10)
+#alt1#null?.foo(11)
diff --git a/tests/contracts.nit b/tests/contracts.nit
new file mode 100644 (file)
index 0000000..ead9257
--- /dev/null
@@ -0,0 +1,41 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Test the creation ans the usage on simply contract, in the same time check the no modification of the parameter.
+# See the `foo` method in `Myclass` the change of x in a body method has no effect on the ensure because x is a primitive type and it's given by copy and not by reference.
+
+class MyClass
+       fun foo(x: Int)
+       is
+               expect(x == 1)
+               ensure(x > 0)
+       do
+               x = 0
+       end
+end
+
+class MyClass2
+       fun foo(bool: Bool)
+       is
+               expect(not bool)
+               ensure(not bool)
+       do
+               if bool then print "Error"
+       end
+end
+
+var first = new MyClass
+first.foo(1)
+var second = new MyClass2
+second.foo(true) #Fail
diff --git a/tests/contracts_abstract.nit b/tests/contracts_abstract.nit
new file mode 100644 (file)
index 0000000..ca54119
--- /dev/null
@@ -0,0 +1,55 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Verification if it's possible to define a contract in different context (abstract class, interface and class) and it's possible to inherit it.
+
+class MyClass
+       fun foo(x: Int, y: Float)is abstract, expect(x != 10)
+end
+
+abstract class AbstractClass
+       fun bar(x: Int, y: Float)is abstract, expect(x >= 1), ensure(y == 10.0)
+end
+
+interface Interface
+       fun baz(x: Int, y: Float)is abstract, ensure(y <= 10.0, y == 42.0)
+end
+
+
+class MySubClass
+       super MyClass
+       super Interface
+       super AbstractClass
+
+       redef fun foo(x: Int, y: Float)
+       do
+               if x == 10 then print "Error"
+       end
+
+       redef fun baz(x: Int, y: Float)
+       do
+
+       end
+
+       redef fun bar(x: Int, y: Float)
+       do
+               if x < 1 then print "Error"
+       end
+end
+
+
+var first = new MySubClass
+first.foo(11,2.0) # Ok
+first.bar(1,10.0) # Ok
+first.baz(9,42.0) # Fail y > 10 (y = 42.0)
diff --git a/tests/contracts_add.nit b/tests/contracts_add.nit
new file mode 100644 (file)
index 0000000..6f99c88
--- /dev/null
@@ -0,0 +1,55 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Verification if it's possible to add a other contract type on existing method.
+# Only the expect contract display a warning when none expect contract are not defined at the introduction
+
+class MyClass
+       fun foo(x: Int)
+       is
+               expect(x == 1)
+       do
+               x=1
+       end
+
+       fun bar(x: Float): Bool
+       is
+               ensure(result)
+       do
+               return true
+       end
+end
+
+class MyClass2
+       super MyClass
+
+       redef fun foo(x: Int)
+       is
+               ensure(x == 0)
+       do
+               x=0
+       end
+
+       redef fun bar(x: Float)
+       is
+               expect(x == 1)
+       do
+               return true
+       end
+end
+
+var first = new MyClass2
+first.foo(1)
+first.bar(1.0)
+first.foo(0)# Fail because the expect is x == 1
diff --git a/tests/contracts_attributs.nit b/tests/contracts_attributs.nit
new file mode 100644 (file)
index 0000000..dae1f23
--- /dev/null
@@ -0,0 +1,52 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Verification if it's possible to define a contract with a call of an attribute and a method call
+
+class MyClass
+
+       var bar = 10
+
+       fun foo(x: Int)
+       is
+               expect(bar == 10)
+               ensure(x > 0)
+       do
+               if bar != 10 then print "Error"
+       end
+end
+
+class MyClass2
+
+       var my_class: MyClass
+
+       fun baz: Bool
+       do
+               return false
+       end
+
+       fun foo(bool: Bool)
+       is
+               expect(not self.baz)
+               ensure(my_class.bar == 11)
+       do
+               if baz then print "Error"
+               my_class.bar = 11
+       end
+end
+
+var first = new MyClass
+first.foo(1) # Ok
+var second = new MyClass2(first)
+second.foo(false) # Ok
similarity index 69%
rename from contrib/neo_doxygen/tests/python-def/src/foo.py
rename to tests/contracts_constructor.nit
index ddb3cf3..7f5a165 100644 (file)
@@ -4,7 +4,7 @@
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+#     http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-## A `bar` function in the `foo` namespace.
-def bar:
-       """By default, Doxygen recognizes anything in the docstrings as verbatim
-       detailed description."""
-       pass
+# Test the contract on constructor.
+
+class MyClass
+       init construct(test: Int)
+       is
+               expect(test > 10)
+       do
+
+       end
+end
+
+var first = new MyClass.construct(13)
+var second = new MyClass.construct(9)
similarity index 64%
rename from contrib/wiringPi/examples/read.nit
rename to tests/contracts_ensures.nit
index 568b2fb..0acf9b3 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.org>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module read is example
+# Verification if it's possible to define a simple ensures contract.
 
-import wiringPi
+class MyClass
+       fun foo(x: Int)
+       is
+               ensure(x > 0)
+       do
 
-if args.length != 1 then
-       print "usage: blink pin_id"
-       exit(1)
+       end
 end
 
-# init wiringPi lib
-wiringPi_setup
-
-# init the pin
-var id = args.first.to_i
-var pin = new RPiPin(id)
-pin.mode(new RPiPinMode.input_mode)
+class MyClass2
+       fun foo(bool: Bool)
+       is
+               ensure(not bool)
+       do
 
-# listen
-loop
-       print pin.read
-       nanosleep(1, 0)
+       end
 end
+
+var first = new MyClass
+first.foo(1)
+var second = new MyClass2
+second.foo(true) #Fail because the ensure is bool == false
similarity index 62%
rename from contrib/refund/Makefile
rename to tests/contracts_ensures_1.nit
index eae12aa..2e6d02c 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-NITC ?= nitc
-NITLS ?= nitls
-NITUNIT ?= nitunit
-NITDOC ?= nitdoc
+# Verification if the contract is inherited
 
-.PHONY: all
-all: bin/refund
+class MyClass
+       fun foo(x: Int)
+       is
+               ensure(x > 0)
+       do
+               print "Good"
+       end
+end
 
-bin/refund: $(shell $(NITLS) -M src/refund.nit)
-       mkdir -p bin/
-       $(NITC) src/refund.nit -o bin/refund
+class SubClass
+       super MyClass
 
-.PHONY: check
-check: bin/refund
-       $(NITUNIT) .
-       cd tests; make
+       redef fun foo(x: Int) do
+               print "Fail"
+       end
+end
 
-.PHONY: doc
-doc:
-       $(NITDOC) . -o doc/
-
-.PHONY: clean
-clean:
-       rm -rf bin/
-       rm -rf doc/
-       cd tests; make clean
+var first = new MyClass
+first.foo(1)
+var sub = new SubClass
+# Check if the contract is inherited
+sub.foo(0) # Fail
\ No newline at end of file
similarity index 61%
rename from contrib/wiringPi/examples/blink.nit
rename to tests/contracts_ensures_2.nit
index 399f4f6..e3828e1 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.org>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module blink is example
-
-import wiringPi
+# Check if the expects contract is redef with `and`
 
-if args.length != 1 then
-       print "usage: blink pin_id"
-       exit(1)
+class MyClass
+       fun foo(x: Int, y: Float)
+       is
+               ensure(x > 0)
+       do
+               print "Good"
+       end
 end
 
-# init wiringPi lib
-wiringPi_setup
+class SubClass
+       super MyClass
 
-# init the pin
-var id = args.first.to_i
-var pin = new RPiPin(id)
-pin.mode(new RPiPinMode.output_mode)
-
-# blink
-loop
-       pin.write(true)
-       nanosleep(1, 0)
-       pin.write(false)
-       nanosleep(1, 0)
+       redef fun foo(x: Int, y: Float)
+       is
+               ensure(y == 1.2)
+       do
+               print "Good"
+       end
 end
+
+var first = new MyClass
+first.foo(1,1.2) # OK
+var sub = new SubClass
+sub.foo(1,1.2) # OK
+sub.foo(1,1.0) # Fail
\ No newline at end of file
diff --git a/tests/contracts_ensures_3.nit b/tests/contracts_ensures_3.nit
new file mode 100644 (file)
index 0000000..bc3e8f3
--- /dev/null
@@ -0,0 +1,28 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Check the ensures with a contract on a result (the return result of the method)
+
+class MyClass
+       fun foo(x: Int): Int
+       is
+               ensure(result > 0)
+       do
+               return x
+       end
+end
+
+var first = new MyClass
+first.foo(1) # OK
+first.foo(0) # FAIL
diff --git a/tests/contracts_ensures_4.nit b/tests/contracts_ensures_4.nit
new file mode 100644 (file)
index 0000000..974d475
--- /dev/null
@@ -0,0 +1,40 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Check the result with the super call
+
+class MyClass
+       fun foo(x: Int): Bool
+       is
+               ensure(x > 0, result)
+       do
+               return true
+       end
+end
+
+class MySubClass
+       super MyClass
+
+       redef fun foo(x: Int)
+       is
+               ensure(not result)
+       do
+               return super
+       end
+end
+
+var first = new MyClass
+first.foo(1)
+var second = new MySubClass
+second.foo(2) #Fail
diff --git a/tests/contracts_ensures_sequence.nit b/tests/contracts_ensures_sequence.nit
new file mode 100644 (file)
index 0000000..920ca60
--- /dev/null
@@ -0,0 +1,38 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+class MyClass
+       fun foo(x: Int, y: Float)
+       is
+               ensure(x > 2)
+       do
+
+       end
+end
+
+class MySubClass
+       super MyClass
+
+       redef fun foo(x: Int, y: Float)
+       is
+               ensure(y > 1.0)
+       do
+
+       end
+end
+
+var first = new MyClass
+first.foo(2, 1.1)
+var second = new MySubClass
+second.foo(1, 0.5) #Fail
diff --git a/tests/contracts_error.nit b/tests/contracts_error.nit
new file mode 100644 (file)
index 0000000..f836751
--- /dev/null
@@ -0,0 +1,31 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Test the error if the annotation parameter is not an good expression (ie is not a comparisons or a method calls returning bouleans)
+
+class MyClass
+
+       fun bar_no_return do end
+
+       fun foo(x: Int)
+       is
+               expect(bar_no_return)
+               ensure(assert x == 1)
+       do
+               x = 0
+       end
+end
+
+var first = new MyClass
+first.foo(1)
diff --git a/tests/contracts_expects.nit b/tests/contracts_expects.nit
new file mode 100644 (file)
index 0000000..b80b150
--- /dev/null
@@ -0,0 +1,38 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Verification if it's possible to define a simple expects contract.
+
+class MyClass
+       fun foo(x: Int)
+       is
+               expect(x > 0)
+       do
+               if x <= 0 then print "FAIL"
+       end
+end
+
+class MyClass2
+       fun foo(bool: Bool)
+       is
+               expect(not bool)
+       do
+               if bool then print "FAIL"
+       end
+end
+
+var first = new MyClass
+first.foo(1) # OK
+var second = new MyClass2
+second.foo(false) # OK
diff --git a/tests/contracts_expects_1.nit b/tests/contracts_expects_1.nit
new file mode 100644 (file)
index 0000000..be6897b
--- /dev/null
@@ -0,0 +1,37 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Check if the contract is inherited
+
+class MyClass
+       fun foo(x: Int)
+       is
+               expect(x > 0)
+       do
+               if x <= 0 then print "FAIL"
+       end
+end
+
+class SubClass
+       super MyClass
+
+       redef fun foo(x: Int) do
+               if x <= 0 then print "FAIL"
+       end
+end
+
+var first = new MyClass
+first.foo(1) # OK
+var sub = new SubClass
+sub.foo(0) # Fail
similarity index 59%
rename from contrib/nitrpg/Makefile
rename to tests/contracts_expects_2.nit
index 0270ede..805c255 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-NITC ?= nitc
-NITLS ?= nitls
-NITUNIT ?= nitunit
-NITDOC ?= nitdoc
+# Check if the expects contract is redef with `or`
 
-.PHONY: all
-all: bin/listener bin/web
+class MyClass
+       fun foo(x: Int)
+       is
+               expect(x > 0)
+       do
+               if x <= 0 then print "FAIL"
+       end
+end
 
-bin/listener: $(shell $(NITLS) -M src/listener.nit)
-       mkdir -p bin/
-       $(NITC) src/listener.nit -o bin/listener
+class SubClass
+       super MyClass
 
-bin/web: $(shell $(NITLS) -M src/web.nit)
-       mkdir -p bin/
-       $(NITC) src/web.nit -o bin/web
+       redef fun foo(x: Int)
+       is
+               expect(x == 0)
+       do
+               if x < 0 then print "FAIL"
+       end
+end
 
-.PHONY: check
-check:
-       $(NITUNIT) .
-
-.PHONY: doc
-doc:
-       $(NITDOC) . -o doc/
-
-.PHONY: clean
-clean:
-       rm -rf bin/
-       rm -rf doc/
+var first = new MyClass
+first.foo(1)
+var sub = new SubClass
+sub.foo(3) # OK
+sub.foo(0) # OK
diff --git a/tests/contracts_expects_3.nit b/tests/contracts_expects_3.nit
new file mode 100644 (file)
index 0000000..018ce7b
--- /dev/null
@@ -0,0 +1,49 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Check if the adding expects contract in a redefinition on an existing method return a warning
+
+class MyClass
+       fun foo(x: Int)
+       do
+               print "Good"
+       end
+end
+
+class SubClass
+       super MyClass
+
+       redef fun foo(x: Int)
+       is
+               expect(x == 0)
+       do
+               if x != 0 then print "Good"
+       end
+end
+
+class SubSubClass
+       super SubClass
+
+       redef fun foo(x: Int)
+       do
+               if x != 0 then print "Good"
+       end
+end
+
+var first = new MyClass
+first.foo(1) # OK
+var sub = new SubClass
+sub.foo(0) # OK
+var subsub = new SubSubClass
+subsub.foo(1) # Ok
diff --git a/tests/contracts_generic_type.nit b/tests/contracts_generic_type.nit
new file mode 100644 (file)
index 0000000..44ac0a0
--- /dev/null
@@ -0,0 +1,43 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Test the creation of contract with generic class
+
+class MyGenericClass[E]
+
+       fun foo(x: E)
+       is
+               expect(x == 1)
+       do
+               if x != 1 then print "Error x != 1"
+       end
+end
+
+class MyGenericClass2[E]
+
+       var real = new Array[E]
+
+       fun add_all(x: Array[Object])
+       is
+               expect(x.length != 0)
+       do
+               real.add_all x
+       end
+end
+
+var first = new MyGenericClass[Int]
+first.foo(1)
+var second = new MyGenericClass2[Int]
+second.add_all([1,2,3])
+second.add_all(new Array[Int])
diff --git a/tests/contracts_inheritance.nit b/tests/contracts_inheritance.nit
new file mode 100644 (file)
index 0000000..12c0694
--- /dev/null
@@ -0,0 +1,58 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Check usage of contract on a diamond inheritance
+
+class ArrayInt
+       super Array[Int]
+
+       fun toto(e: Int)
+       do
+               print "toto ArrayInt"
+       end
+end
+
+
+class MyArrayInt
+       super ArrayInt
+
+       redef fun toto(e)
+       is
+               ensure(e == 12)
+       do
+               print "toto MyArrayInt"
+               super e
+       end
+end
+
+class MyArrayInt2
+       super ArrayInt
+
+       redef fun toto(e)
+       is
+               ensure(e == 11)
+       do
+               print "toto MyArrayInt2"
+               super e
+               print "Good"
+       end
+end
+
+class MySubArray
+       super MyArrayInt
+       super MyArrayInt2
+end
+
+var test = new MySubArray
+test.toto(11)# fail contract on MyArrayInt define e == 12
similarity index 68%
rename from contrib/neo_doxygen/src/model/model.nit
rename to tests/contracts_same_contract.nit
index 8ad7e5e..93e7f65 100644 (file)
@@ -4,7 +4,7 @@
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+#     http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# The model used to populate the Neo4j graph.
-module model
+# Test when to same contracts are use in a same method definition
 
-import location
-import linked_text
-import graph
-import class_compound
-import module_compound
-import member
-import inner_class
-import namespace_members
+class MyClass
+
+       fun foo(x: Int)
+       is
+               expect(x == 10)
+               expect(x >= 10)
+       do
+               x = 0
+       end
+end
+
+var first = new MyClass
+first.foo(10)
diff --git a/tests/contracts_static.nit b/tests/contracts_static.nit
new file mode 100644 (file)
index 0000000..8b90ac8
--- /dev/null
@@ -0,0 +1,38 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Test the resolution of contract when the static mpropdef does not have contract and the dynamic has one
+
+class MyClass
+       fun foo(x: Int)
+       do
+               x = 0
+       end
+end
+
+class MySubClass
+       super MyClass
+
+       redef fun foo(x)
+       is
+               ensure(x > 10)
+       do
+               if x < 10 then print "Error"
+       end
+end
+
+var first = new MyClass
+first.foo(1) # No contract on the mpropdef
+var second: MyClass = new MySubClass
+second.foo(2) #Fail
similarity index 67%
rename from contrib/refund/tests/Makefile
rename to tests/contracts_virtual_type.nit
index 0dce637..0e601c7 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2013 Alexandre Terrasa <alexandre@moz-code.org>.
+# This file is part of NIT ( http://www.nitlanguage.org ).
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-all: tests
+# Test the creation of contract with virtual type
 
-tests: clean
-       ./tests.sh
+class MyClass
 
-clean:
-       rm -rf out/
+       type VIRTUAL: Int
+
+       fun foo(x: VIRTUAL)
+       is
+               expect(x == 1)
+       do
+
+       end
+end
+
+var first = new MyClass
+first.foo(1)
+first.foo(3) # Fail 3 != 1
index 104aa6b..bea282c 100644 (file)
@@ -16,5 +16,5 @@
 
 class A
        #alt1#once
-       ?&*
+       `?&*
 end
index ba1a276..5eff78e 100644 (file)
@@ -6,3 +6,4 @@ base_simple3.nit
 -n -e 'print line' test_prog/README.md test_prog/test_prog.nit
 test_ffi_c_interpreter.nit
 -
+--keep-going test_keep_going.nit --run --dir out/
index b68b2f2..d590e01 100644 (file)
@@ -9,3 +9,4 @@ test_define.nit -D text=hello -D num=42 -D flag --dir out/ ; out/test_define
 --log --log-dir $WRITE test_prog -o out/test_prog.bin
 test_define.nit --semi-global -D text=hello -D num=42 -D flag --dir out/ ; out/test_define
 --run ../examples/print_arguments.nit 1 2 3 --dir out/
+--keep-going test_keep_going.nit --run --dir out/
index b836f65..16a81df 100644 (file)
@@ -9,3 +9,4 @@ test_model_index
 test_loader
 get_mclasses
 ^nit
+test_astbuilder
index 0d24e60..6e60c30 100644 (file)
@@ -5,6 +5,7 @@ nit_args4
 nit_args5
 nit_args6
 nit_args8
+nit_args9
 nitvm_args1
 nitvm_args3
 nitin
@@ -45,3 +46,4 @@ test_csv
 repeating_key_xor_solve
 nitpm
 nitdoc
+test_astbuilder
index 697b17e..61f68f8 100644 (file)
@@ -5,6 +5,7 @@ nit_args4
 nit_args5
 nit_args6
 nit_args8
+nit_args9
 nitvm_args1
 nitvm_args3
 nitin
@@ -48,3 +49,4 @@ base_notnull_lit_alt2
 assertions
 nitpm
 nitdoc
+test_astbuilder
diff --git a/tests/sav/base_safe.res b/tests/sav/base_safe.res
new file mode 100644 (file)
index 0000000..622ceaa
--- /dev/null
@@ -0,0 +1,10 @@
+afalse
+F1
+B2
+rfalse
+B10
+B11
+F12
+
+atrue
+rtrue
diff --git a/tests/sav/base_safe_alt1.res b/tests/sav/base_safe_alt1.res
new file mode 100644 (file)
index 0000000..8512172
--- /dev/null
@@ -0,0 +1,2 @@
+alt/base_safe_alt1.nit:50,1--2: Warning: useless safe operator `?` on non-nullable value.
+alt/base_safe_alt1.nit:51,1--5: Error: safe operator `?` on `null`.
diff --git a/tests/sav/base_safe_alt2.res b/tests/sav/base_safe_alt2.res
new file mode 100644 (file)
index 0000000..f7df0a0
--- /dev/null
@@ -0,0 +1,13 @@
+Runtime error: Receiver is null (alt/base_safe_alt2.nit:40)
+afalse
+F1
+B2
+rfalse
+B10
+B11
+F12
+B20
+F21
+
+atrue
+rtrue
diff --git a/tests/sav/base_safe_alt3.res b/tests/sav/base_safe_alt3.res
new file mode 100644 (file)
index 0000000..f367bdd
--- /dev/null
@@ -0,0 +1,13 @@
+Runtime error: Receiver is null (alt/base_safe_alt3.nit:41)
+afalse
+F1
+B2
+rfalse
+B10
+B11
+F12
+B20
+F21
+
+atrue
+rtrue
diff --git a/tests/sav/base_safe_alt4.res b/tests/sav/base_safe_alt4.res
new file mode 100644 (file)
index 0000000..e0972a4
--- /dev/null
@@ -0,0 +1,14 @@
+alt/base_safe_alt4.nit:42,2--11: Warning: useless safe operator `?` on non-nullable value.
+Runtime error: Receiver is null (alt/base_safe_alt4.nit:42)
+afalse
+F1
+B2
+rfalse
+B10
+B11
+F12
+B20
+F21
+
+atrue
+rtrue
diff --git a/tests/sav/contracts.res b/tests/sav/contracts.res
new file mode 100644 (file)
index 0000000..fe6b723
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'expect' failed (contracts.nit:31)
diff --git a/tests/sav/contracts_abstract.res b/tests/sav/contracts_abstract.res
new file mode 100644 (file)
index 0000000..5f6178c
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_abstract.nit:26)
diff --git a/tests/sav/contracts_add.res b/tests/sav/contracts_add.res
new file mode 100644 (file)
index 0000000..a353fc9
--- /dev/null
@@ -0,0 +1,2 @@
+contracts_add.nit:46,3--16: Useless contract: No contract defined at the introduction of the method
+Runtime error: Assert 'ensure' failed (contracts_add.nit:39)
diff --git a/tests/sav/contracts_constructor.res b/tests/sav/contracts_constructor.res
new file mode 100644 (file)
index 0000000..f0801df
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'expect' failed (contracts_constructor.nit:20)
diff --git a/tests/sav/contracts_ensures.res b/tests/sav/contracts_ensures.res
new file mode 100644 (file)
index 0000000..5e3bffa
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures.nit:29)
diff --git a/tests/sav/contracts_ensures_1.res b/tests/sav/contracts_ensures_1.res
new file mode 100644 (file)
index 0000000..c947107
--- /dev/null
@@ -0,0 +1,3 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_1.nit:20)
+Good
+Fail
diff --git a/tests/sav/contracts_ensures_2.res b/tests/sav/contracts_ensures_2.res
new file mode 100644 (file)
index 0000000..982613a
--- /dev/null
@@ -0,0 +1,4 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_2.nit:31)
+Good
+Good
+Good
diff --git a/tests/sav/contracts_ensures_3.res b/tests/sav/contracts_ensures_3.res
new file mode 100644 (file)
index 0000000..11ebcc5
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_3.nit:20)
diff --git a/tests/sav/contracts_ensures_4.res b/tests/sav/contracts_ensures_4.res
new file mode 100644 (file)
index 0000000..e602695
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_4.nit:31)
diff --git a/tests/sav/contracts_ensures_5.res b/tests/sav/contracts_ensures_5.res
new file mode 100644 (file)
index 0000000..b99b0a1
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_5.nit:29)
diff --git a/tests/sav/contracts_ensures_sequence.res b/tests/sav/contracts_ensures_sequence.res
new file mode 100644 (file)
index 0000000..3cdcc71
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'ensure' failed (contracts_ensures_sequence.nit:18)
diff --git a/tests/sav/contracts_error.res b/tests/sav/contracts_error.res
new file mode 100644 (file)
index 0000000..45e60a6
--- /dev/null
@@ -0,0 +1,2 @@
+contracts_error.nit:23,10--22: Error: expected an expression.
+contracts_error.nit:24,10--22: Error: expected an expression.
diff --git a/tests/sav/contracts_expects_1.res b/tests/sav/contracts_expects_1.res
new file mode 100644 (file)
index 0000000..c265d14
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'expect' failed (contracts_expects_1.nit:20)
diff --git a/tests/sav/contracts_expects_2.res b/tests/sav/contracts_expects_2.res
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/sav/contracts_expects_3.res b/tests/sav/contracts_expects_3.res
new file mode 100644 (file)
index 0000000..034b500
--- /dev/null
@@ -0,0 +1,3 @@
+contracts_expects_3.nit:29,3--16: Useless contract: No contract defined at the introduction of the method
+Good
+Good
diff --git a/tests/sav/contracts_generic_type.res b/tests/sav/contracts_generic_type.res
new file mode 100644 (file)
index 0000000..9c7f782
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'expect' failed (contracts_generic_type.nit:33)
diff --git a/tests/sav/contracts_inheritance.res b/tests/sav/contracts_inheritance.res
new file mode 100644 (file)
index 0000000..0abeba3
--- /dev/null
@@ -0,0 +1,6 @@
+contracts_inheritance.nit:58,6--9: Warning: conflicting property definitions for property `toto` in `MySubArray`: contracts_inheritance$MyArrayInt$toto contracts_inheritance$MyArrayInt2$toto
+Runtime error: Assert 'ensure' failed (contracts_inheritance.nit:32)
+toto MyArrayInt2
+toto MyArrayInt
+toto ArrayInt
+Good
diff --git a/tests/sav/contracts_same_contract.res b/tests/sav/contracts_same_contract.res
new file mode 100644 (file)
index 0000000..54afbe1
--- /dev/null
@@ -0,0 +1 @@
+contracts_same_contract.nit:22,3--17: The method already has a defined `expect` contract at line 21
diff --git a/tests/sav/contracts_static.res b/tests/sav/contracts_static.res
new file mode 100644 (file)
index 0000000..95b94d6
--- /dev/null
@@ -0,0 +1,2 @@
+Runtime error: Assert 'ensure' failed (contracts_static.nit:29)
+Error
diff --git a/tests/sav/contracts_virtual_type.res b/tests/sav/contracts_virtual_type.res
new file mode 100644 (file)
index 0000000..616e1d0
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert 'expect' failed (contracts_virtual_type.nit:23)
index 587f274..0c199db 100644 (file)
@@ -12,29 +12,25 @@ Body: <!doctype html>
         background-color: #f0f0f2;
         margin: 0;
         padding: 0;
-        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
         
     }
     div {
         width: 600px;
         margin: 5em auto;
-        padding: 50px;
-        background-color: #fff;
-        border-radius: 1em;
+        padding: 2em;
+        background-color: #fdfdff;
+        border-radius: 0.5em;
+        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
     }
     a:link, a:visited {
         color: #38488f;
         text-decoration: none;
     }
     @media (max-width: 700px) {
-        body {
-            background-color: #fff;
-        }
         div {
-            width: auto;
             margin: 0 auto;
-            border-radius: 0;
-            padding: 1em;
+            width: auto;
         }
     }
     </style>    
@@ -43,9 +39,9 @@ Body: <!doctype html>
 <body>
 <div>
     <h1>Example Domain</h1>
-    <p>This domain is established to be used for illustrative examples in documents. You may use this
-    domain in examples without prior coordination or asking for permission.</p>
-    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
+    <p>This domain is for use in illustrative examples in documents. You may use this
+    domain in literature without prior coordination or asking for permission.</p>
+    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
 </div>
 </body>
 </html>
index 7fa85c5..da5e31d 100644 (file)
@@ -11,29 +11,25 @@ Our body from the callback: <!doctype html>
         background-color: #f0f0f2;
         margin: 0;
         padding: 0;
-        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
         
     }
     div {
         width: 600px;
         margin: 5em auto;
-        padding: 50px;
-        background-color: #fff;
-        border-radius: 1em;
+        padding: 2em;
+        background-color: #fdfdff;
+        border-radius: 0.5em;
+        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
     }
     a:link, a:visited {
         color: #38488f;
         text-decoration: none;
     }
     @media (max-width: 700px) {
-        body {
-            background-color: #fff;
-        }
         div {
-            width: auto;
             margin: 0 auto;
-            border-radius: 0;
-            padding: 1em;
+            width: auto;
         }
     }
     </style>    
@@ -42,9 +38,9 @@ Our body from the callback: <!doctype html>
 <body>
 <div>
     <h1>Example Domain</h1>
-    <p>This domain is established to be used for illustrative examples in documents. You may use this
-    domain in examples without prior coordination or asking for permission.</p>
-    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
+    <p>This domain is for use in illustrative examples in documents. You may use this
+    domain in literature without prior coordination or asking for permission.</p>
+    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
 </div>
 </body>
 </html>
index bf03427..534c086 100644 (file)
@@ -1,3 +1,3 @@
 *** Answer ***
 Status code: 200
-Size downloaded: 1270.0
+Size downloaded: 1256.0
index 832c37c..030b151 100644 (file)
@@ -1 +1 @@
-error_syntax.nit:19,2: Syntax Error: unknown token `?`.
+error_syntax.nit:19,2: Syntax Error: unknown token ``?`.
diff --git a/tests/sav/nit_args9.res b/tests/sav/nit_args9.res
new file mode 100644 (file)
index 0000000..1a3a40c
--- /dev/null
@@ -0,0 +1,25 @@
+\e[0;33mtest_keep_going.nit:15,11--14\e[0m: Error: class `Fail` not found in module `test_keep_going`.
+       fun plop: \e[1;31mFail\e[0m
+                 ^
+\e[0;33mtest_keep_going.nit:40,2--11\e[0m: Error: unreachable statement.
+               \e[1;31m999.output\e[0m
+               ^
+\e[0;33mtest_keep_going.nit:26,2--5\e[0m: Error: method or variable `fail` unknown in `Sys`.
+               \e[1;31mfail\e[0m
+               ^
+\e[0;33mtest_keep_going.nit:30,14--17\e[0m: Error: class `Fail` not found in module `test_keep_going`.
+               var x = new \e[1;31mFail\e[0m
+                           ^
+\e[0;33mtest_keep_going.nit:35,5\e[0m: Type Error: expected `Bool`, got `Int`.
+               if \e[1;31m1\e[0m then abort
+                  ^
+\e[0;33mtest_keep_going.nit:44,18--21\e[0m: Error: method `fail` does not exists in `Sys`.
+               var a = new Sys.\e[1;31mfail\e[0m
+                               ^
+1
+2
+3
+4
+5
+6
+7
diff --git a/tests/sav/nitc_args12.res b/tests/sav/nitc_args12.res
new file mode 100644 (file)
index 0000000..4181eb7
--- /dev/null
@@ -0,0 +1,26 @@
+\e[0;33mtest_keep_going.nit:15,11--14\e[0m: Error: class `Fail` not found in module `test_keep_going`.
+       fun plop: \e[1;31mFail\e[0m
+                 ^
+\e[0;33mtest_keep_going.nit:40,2--11\e[0m: Error: unreachable statement.
+               \e[1;31m999.output\e[0m
+               ^
+\e[0;33mtest_keep_going.nit:26,2--5\e[0m: Error: method or variable `fail` unknown in `Sys`.
+               \e[1;31mfail\e[0m
+               ^
+\e[0;33mtest_keep_going.nit:30,14--17\e[0m: Error: class `Fail` not found in module `test_keep_going`.
+               var x = new \e[1;31mFail\e[0m
+                           ^
+\e[0;33mtest_keep_going.nit:35,5\e[0m: Type Error: expected `Bool`, got `Int`.
+               if \e[1;31m1\e[0m then abort
+                  ^
+\e[0;33mtest_keep_going.nit:44,18--21\e[0m: Error: method `fail` does not exists in `Sys`.
+               var a = new Sys.\e[1;31mfail\e[0m
+                               ^
+Errors: 6. Warnings: 0.
+1
+2
+3
+4
+5
+6
+7
index 7ab7a71..040f43c 100644 (file)
@@ -30,7 +30,7 @@
 <div class="content"><div style="float: left">
        <h1 class="package-name">test_prog&nbsp;-&nbsp;</h1>
 </div>
-<div class="nitdoc"><h1 class="synopsys">Test program for model tools.</h1><p>This program creates a fake model that can be used to test tools like:</p>
+<div class="nitdoc"><h1 class="synopsis">Test program for model tools.</h1><p>This program creates a fake model that can be used to test tools like:</p>
 <ul>
 <li><code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_i">nitdoc</span></span></span></code></li>
 <li><code class="nitcode"><span class="nitcode"><span class="line"><span class="nc_i">nitmetrics</span></span></span></code></li>
 <p>An image:</p>
 <p><img src="../res/c94d8a73ccfe143ebde7599e88f5f5ce.png" alt="Tinks3D"/></p>
 </div><h2>Content</h2><ul>
-<li><strong>test_prog</strong>: <span class="synopsys nitdoc">Test program for model tools.</span> (test_prog)<ul>
+<li><strong>test_prog</strong>: <span class="synopsis nitdoc">Test program for model tools.</span> (test_prog)<ul>
 <li><strong>examples</strong> (test_prog/examples)<ul>
 <li><strong>game_examples</strong> (test_prog/examples/game_examples.nit)</li>
 </ul>
 </li>
-<li><strong>game</strong>: <span class="synopsys nitdoc">Gaming group</span> (test_prog/game)<ul>
-<li><strong>game</strong>: <span class="synopsys nitdoc">A game abstraction for RPG.</span> (test_prog/game/game.nit)</li>
+<li><strong>game</strong>: <span class="synopsis nitdoc">Gaming group</span> (test_prog/game)<ul>
+<li><strong>game</strong>: <span class="synopsis nitdoc">A game abstraction for RPG.</span> (test_prog/game/game.nit)</li>
 </ul>
 </li>
-<li><strong>platform</strong>: <span class="synopsys nitdoc">Fictive Crappy Platform.</span> (test_prog/platform)<ul>
-<li><strong>platform</strong>: <span class="synopsys nitdoc">Declares base types allowed on the platform.</span> (test_prog/platform/platform.nit)</li>
+<li><strong>platform</strong>: <span class="synopsis nitdoc">Fictive Crappy Platform.</span> (test_prog/platform)<ul>
+<li><strong>platform</strong>: <span class="synopsis nitdoc">Declares base types allowed on the platform.</span> (test_prog/platform/platform.nit)</li>
 </ul>
 </li>
-<li><strong>rpg</strong>: <span class="synopsys nitdoc">Role Playing Game group</span> (test_prog/rpg)<ul>
-<li><strong>careers</strong>: <span class="synopsys nitdoc">Careers of the game.</span> (test_prog/rpg/careers.nit)</li>
-<li><strong>character</strong>: <span class="synopsys nitdoc">Characters are playable entity in the world.</span> (test_prog/rpg/character.nit)</li>
-<li><strong>combat</strong>: <span class="synopsys nitdoc">COmbat interactions between characters.</span> (test_prog/rpg/combat.nit)</li>
-<li><strong>races</strong>: <span class="synopsys nitdoc">Races of the game.</span> (test_prog/rpg/races.nit)</li>
-<li><strong>rpg</strong>: <span class="synopsys nitdoc">A worlg RPG abstraction.</span> (test_prog/rpg/rpg.nit)</li>
+<li><strong>rpg</strong>: <span class="synopsis nitdoc">Role Playing Game group</span> (test_prog/rpg)<ul>
+<li><strong>careers</strong>: <span class="synopsis nitdoc">Careers of the game.</span> (test_prog/rpg/careers.nit)</li>
+<li><strong>character</strong>: <span class="synopsis nitdoc">Characters are playable entity in the world.</span> (test_prog/rpg/character.nit)</li>
+<li><strong>combat</strong>: <span class="synopsis nitdoc">COmbat interactions between characters.</span> (test_prog/rpg/combat.nit)</li>
+<li><strong>races</strong>: <span class="synopsis nitdoc">Races of the game.</span> (test_prog/rpg/races.nit)</li>
+<li><strong>rpg</strong>: <span class="synopsis nitdoc">A worlg RPG abstraction.</span> (test_prog/rpg/rpg.nit)</li>
 </ul>
 </li>
-<li><strong>test_prog</strong>: <span class="synopsys nitdoc">A test program with a fake model to check model tools.</span> (test_prog/test_prog.nit)</li>
+<li><strong>test_prog</strong>: <span class="synopsis nitdoc">A test program with a fake model to check model tools.</span> (test_prog/test_prog.nit)</li>
 <li><strong>tests</strong> (test_prog/tests)<ul>
 <li><strong>test_game</strong> (test_prog/tests/test_game.nit)</li>
 </ul>
index 8c804fd..b36a61b 100644 (file)
@@ -7,11 +7,11 @@ Warning: no source file for `excluded`
   * has_package 1
   * has_readme 1
   * md_lines 12
-  * nb_section 0
-  * md_blocks 14
-  * BlockParagraph 4
-  * BlockUnorderedList 1
-  * BlockListItem 4
-  * SpanCode 4
-  * Image 1
+  * MdDocument 1
+  * MdParagraph 8
+  * MdText 6
+  * MdUnorderedList 1
+  * MdListItem 4
+  * MdCode 4
+  * MdImage 1
 readme.csv
index f1851ee..7cec735 100644 (file)
@@ -35,5 +35,5 @@ Test suites: Classes: 1; Test Cases: 3; Failures: 1
 </system-out></testcase><testcase classname="nitunit.test_nitunit.X" name="foo1" time="0.0"><failure message="Syntax Error: unexpected operator &#39;!&#39;."></failure><system-out>assert !@#$%^&amp;*()
 </system-out></testcase><testcase classname="nitunit.test_nitunit.X" name="foo2" time="0.0"><system-err></system-err><system-out>var x = new X
 assert x.foo2
-</system-out></testcase></testsuite><testsuite package="test_test_nitunit::test_test_nitunit"></testsuite><testsuite package="test_test_nitunit"><testcase classname="nitunit.test_test_nitunit.TestX" name="test_foo" time="0.0"><system-err></system-err></testcase><testcase classname="nitunit.test_test_nitunit.TestX" name="test_foo1" time="0.0"><error message="Runtime Error in file nitunit.out&#47;gen_test_test_nitunit.nit">Runtime error: Assert failed (test_test_nitunit.nit:38)
+</system-out></testcase></testsuite><testsuite package="test_test_nitunit"><testcase classname="nitunit.test_test_nitunit.TestX" name="test_foo" time="0.0"><system-err></system-err></testcase><testcase classname="nitunit.test_test_nitunit.TestX" name="test_foo1" time="0.0"><error message="Runtime Error in file nitunit.out&#47;gen_test_test_nitunit.nit">Runtime error: Assert failed (test_test_nitunit.nit:38)
 </error></testcase><testcase classname="nitunit.test_test_nitunit.TestX" name="test_foo2" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index 5fdb314..cbfc0cd 100644 (file)
@@ -5,4 +5,4 @@
 Docunits: Entities: 4; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 2; Failures: 0
 [SUCCESS] All 2 tests passed.
-<testsuites><testsuite package="test_nitunit5::test_nitunit5"></testsuite><testsuite package="test_nitunit5"><testcase classname="nitunit.test_nitunit5.TestNitunit5" name="test_path_is_set" time="0.0"><system-err></system-err></testcase><testcase classname="nitunit.test_nitunit5.TestNitunit5" name="test_path_is_suite_path" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit5"><testcase classname="nitunit.test_nitunit5.TestNitunit5" name="test_path_is_set" time="0.0"><system-err></system-err></testcase><testcase classname="nitunit.test_nitunit5.TestNitunit5" name="test_path_is_suite_path" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index 0d1829d..a640323 100644 (file)
@@ -13,4 +13,4 @@ Docunits: Entities: 5; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 3; Failures: 3
 [FAILURE] 3/3 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit6::test_nitunit6"></testsuite><testsuite package="test_nitunit6"><testcase classname="nitunit.test_nitunit6.TestNitunit6" name="test_foo" time="0.0"><failure message="Nitunit Error: before module test failed"></failure></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit6"><testcase classname="nitunit.test_nitunit6.TestNitunit6" name="test_foo" time="0.0"><failure message="Nitunit Error: before module test failed"></failure></testcase></testsuite></testsuites>
\ No newline at end of file
index 9015b4a..4932785 100644 (file)
@@ -11,4 +11,4 @@ Docunits: Entities: 5; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 3; Failures: 1
 [FAILURE] 1/3 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit7::test_nitunit7"></testsuite><testsuite package="test_nitunit7"><testcase classname="nitunit.test_nitunit7.TestNitunit7" name="test_foo" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit7"><testcase classname="nitunit.test_nitunit7.TestNitunit7" name="test_foo" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index 8c8d3f9..84dbc07 100644 (file)
@@ -11,4 +11,4 @@ Docunits: Entities: 3; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 3; Failures: 1
 [FAILURE] 1/3 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit8::test_nitunit8"></testsuite><testsuite package="test_nitunit8"><testcase classname="nitunit.test_nitunit8.TestNitunit8" name="test_foo" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit8"><testcase classname="nitunit.test_nitunit8.TestNitunit8" name="test_foo" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index c0f1e23..3cb2d30 100644 (file)
@@ -15,4 +15,4 @@ Docunits: Entities: 7; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 7; Failures: 1
 [FAILURE] 1/7 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit11::test_nitunit11"></testsuite><testsuite package="test_nitunit11"><testcase classname="nitunit.test_nitunit11.TestNitunit11" name="test_baz" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit11"><testcase classname="nitunit.test_nitunit11.TestNitunit11" name="test_baz" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index 404c270..7682e35 100644 (file)
@@ -59,11 +59,11 @@ Docunits: Entities: 22; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 3; Test Cases: 8; Failures: 7
 [FAILURE] 7/8 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit4&gt;"></testsuite><testsuite package="test_nitunit4::nitunit4"></testsuite><testsuite package="test_nitunit4::test_bad_comp"></testsuite><testsuite package="test_bad_comp"><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_good" time="0.0"><failure message="Compilation Error">test_nitunit4&#47;test_bad_comp.nit:25,10--19: Error: method or variable `bad_method` unknown in `TestSuiteBadComp`.
+<testsuites><testsuite package="test_bad_comp"><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_good" time="0.0"><failure message="Compilation Error">test_nitunit4&#47;test_bad_comp.nit:25,10--19: Error: method or variable `bad_method` unknown in `TestSuiteBadComp`.
 </failure></testcase><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_bad" time="0.0"><failure message="Compilation Error">test_nitunit4&#47;test_bad_comp.nit:25,10--19: Error: method or variable `bad_method` unknown in `TestSuiteBadComp`.
-</failure></testcase></testsuite><testsuite package="test_nitunit4::test_bad_comp2"></testsuite><testsuite package="test_bad_comp2"><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_good" time="0.0"><failure message="Compilation Error">nitunit.out&#47;gen_test_bad_comp2.nit:11,10--17: Error: expected 1 argument(s) for `test_bad(param: Bool)`; got 0. See introduction at `test_nitunit4::TestSuiteBadComp::test_bad`.
+</failure></testcase></testsuite><testsuite package="test_bad_comp2"><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_good" time="0.0"><failure message="Compilation Error">nitunit.out&#47;gen_test_bad_comp2.nit:11,10--17: Error: expected 1 argument(s) for `test_bad(param: Bool)`; got 0. See introduction at `test_nitunit4::TestSuiteBadComp::test_bad`.
 </failure></testcase><testcase classname="nitunit.test_nitunit4.TestSuiteBadComp" name="test_bad" time="0.0"><failure message="Compilation Error">nitunit.out&#47;gen_test_bad_comp2.nit:11,10--17: Error: expected 1 argument(s) for `test_bad(param: Bool)`; got 0. See introduction at `test_nitunit4::TestSuiteBadComp::test_bad`.
-</failure></testcase></testsuite><testsuite package="test_nitunit4::test_nitunit4"></testsuite><testsuite package="test_nitunit4"><testcase classname="nitunit.test_nitunit4.TestTestSuite" name="test_foo" time="0.0"><error message="Runtime Error in file nitunit.out&#47;gen_test_nitunit4.nit">Before Test
+</failure></testcase></testsuite><testsuite package="test_nitunit4"><testcase classname="nitunit.test_nitunit4.TestTestSuite" name="test_foo" time="0.0"><error message="Runtime Error in file nitunit.out&#47;gen_test_nitunit4.nit">Before Test
 Tested method
 After Test
 Runtime assert: &lt;TestTestSuite&gt;.before
@@ -82,4 +82,4 @@ After Test
 </error></testcase><testcase classname="nitunit.test_nitunit4.TestTestSuite" name="test_sav_conflict" time="0.0"><error message="Conflicting expected output: test_nitunit4&#47;test_nitunit4.sav&#47;test_sav_conflict.res, test_nitunit4&#47;sav&#47;test_sav_conflict.res and test_nitunit4&#47;test_sav_conflict.res all exist">Before Test
 Tested method
 After Test
-</error></testcase></testsuite><testsuite package="test_nitunit4::test_nitunit4_base"></testsuite></testsuites>
\ No newline at end of file
+</error></testcase></testsuite></testsuites>
\ No newline at end of file
diff --git a/tests/sav/syntax_callref.res b/tests/sav/syntax_callref.res
new file mode 100644 (file)
index 0000000..cc5dc21
--- /dev/null
@@ -0,0 +1,14 @@
+foo<Sys>
+foo<Sys>
+baz<Sys>
+foo<Sys>
+baz<FunRef0>
+foo<Sys>
+baz<Sys>
+foo<Y>
+foo<Y>
+baz<Y>
+foo<Y>
+baz<FunRef0>
+foo<Y>
+baz<Y>
diff --git a/tests/sav/syntax_callref_alt1.res b/tests/sav/syntax_callref_alt1.res
new file mode 100644 (file)
index 0000000..4331840
--- /dev/null
@@ -0,0 +1 @@
+alt/syntax_callref_alt1.nit:55,5--6: Error: `y` is a variable, not a method.
diff --git a/tests/sav/syntax_lambda.res b/tests/sav/syntax_lambda.res
new file mode 100644 (file)
index 0000000..399d840
--- /dev/null
@@ -0,0 +1 @@
+syntax_lambda.nit:36,1--28: Error: unreachable statement.
diff --git a/tests/sav/syntax_lambda_alt1.res b/tests/sav/syntax_lambda_alt1.res
new file mode 100644 (file)
index 0000000..13c981f
--- /dev/null
@@ -0,0 +1 @@
+alt/syntax_lambda_alt1.nit:65,1: Syntax Error: unexpected end of file.
diff --git a/tests/sav/syntax_lambda_alt2.res b/tests/sav/syntax_lambda_alt2.res
new file mode 100644 (file)
index 0000000..0c1ef9a
--- /dev/null
@@ -0,0 +1 @@
+alt/syntax_lambda_alt2.nit:29,25: Syntax Error: unexpected ')'.
diff --git a/tests/sav/test_astbuilder.res b/tests/sav/test_astbuilder.res
new file mode 100644 (file)
index 0000000..6dae4e5
--- /dev/null
@@ -0,0 +1,3 @@
+Usage: nit [OPTION]... <file.nit>...
+Interprets and debugs Nit programs.
+Use --help for help
diff --git a/tests/sav/test_astbuilder_args1.res b/tests/sav/test_astbuilder_args1.res
new file mode 100644 (file)
index 0000000..a29ab05
--- /dev/null
@@ -0,0 +1,3 @@
+Test print
+Test astbuilder
+c
diff --git a/tests/sav/test_callref.res b/tests/sav/test_callref.res
new file mode 100644 (file)
index 0000000..6fbe92f
--- /dev/null
@@ -0,0 +1,14 @@
+in A::fun1
+in B::fun1
+100
+in B::fun1
+in B::fun1
+in B::fun1
+110
+3
+5
+x is null
+x is null
+x is test
+x is 100
+x is 100
diff --git a/tests/sav/test_file_read3.res b/tests/sav/test_file_read3.res
new file mode 100644 (file)
index 0000000..461ab2d
--- /dev/null
@@ -0,0 +1,263 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+true
+#
+true
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+true
+#
+true
+# Licensed under the Apache License, Version 2.0 (the "License");
+true
+# you may not use this file except in compliance with the License.
+true
+# You may obtain a copy of the License at
+true
+#
+true
+#     http://www.apache.org/licenses/LICENSE-2.0
+true
+#
+true
+# Unless required by applicable law or agreed to in writing, software
+true
+# distributed under the License is distributed on an "AS IS" BASIS,
+true
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+true
+# See the License for the specific language governing permissions and
+true
+# limitations under the License.
+true
+
+true
+var f = new FileReader.open("test_file_read.nit")
+true
+var s: String
+true
+while not f.eof do
+true
+    s = f.read_line
+true
+    printn(s)
+true
+    printn("\n")
+true
+end
+true
+f.close
+true
+
+true
+f.reopen
+true
+printn(f.read(10))
+true
+printn("|")
+true
+printn(f.read_all)
+true
+---
+true
+# This file is part of NIT ( http://www.nitlanguage.org ).
+true
+# This file is part of NIT ( http://www.nitlanguage.org ).
+true
+true
+#
+true
+#
+true
+true
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+true
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+true
+true
+#
+true
+#
+true
+true
+# Licensed under the Apache License, Version 2.0 (the "License");
+true
+# Licensed under the Apache License, Version 2.0 (the "License");
+true
+true
+# you may not use this file except in compliance with the License.
+true
+# you may not use this file except in compliance with the License.
+true
+true
+# You may obtain a copy of the License at
+true
+# You may obtain a copy of the License at
+true
+true
+#
+true
+#
+true
+true
+#     http://www.apache.org/licenses/LICENSE-2.0
+true
+#     http://www.apache.org/licenses/LICENSE-2.0
+true
+true
+#
+true
+#
+true
+true
+# Unless required by applicable law or agreed to in writing, software
+true
+# Unless required by applicable law or agreed to in writing, software
+true
+true
+# distributed under the License is distributed on an "AS IS" BASIS,
+true
+# distributed under the License is distributed on an "AS IS" BASIS,
+true
+true
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+true
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+true
+true
+# See the License for the specific language governing permissions and
+true
+# See the License for the specific language governing permissions and
+true
+true
+# limitations under the License.
+true
+# limitations under the License.
+true
+true
+
+true
+
+true
+true
+var f = new FileReader.open("test_file_read.nit")
+true
+var f = new FileReader.open("test_file_read.nit")
+true
+true
+var s: String
+true
+var s: String
+true
+true
+while not f.eof do
+true
+while not f.eof do
+true
+true
+    s = f.read_line
+true
+    s = f.read_line
+true
+true
+    printn(s)
+true
+    printn(s)
+true
+true
+    printn("\n")
+true
+    printn("\n")
+true
+true
+end
+true
+end
+true
+true
+f.close
+true
+f.close
+true
+true
+
+true
+
+true
+true
+f.reopen
+true
+f.reopen
+true
+true
+printn(f.read(10))
+true
+printn(f.read(10))
+true
+true
+printn("|")
+true
+printn("|")
+true
+true
+printn(f.read_all)
+true
+printn(f.read_all)
+true
+---
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+#
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+# Copyright 2004-2008 Jean Privat <jean@pryen.org>
+#
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# You may obtain a copy of the License at
+#
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#
+# Unless required by applicable law or agreed to in writing, software
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# limitations under the License.
+
+
+var f = new FileReader.open("test_file_read.nit")
+var f = new FileReader.open("test_file_read.nit")
+var s: String
+var s: String
+while not f.eof do
+while not f.eof do
+    s = f.read_line
+    s = f.read_line
+    printn(s)
+    printn(s)
+    printn("\n")
+    printn("\n")
+end
+end
+f.close
+f.close
+
+
+f.reopen
+f.reopen
+printn(f.read(10))
+printn(f.read(10))
+printn("|")
+printn("|")
+printn(f.read_all)
+printn(f.read_all)
index 2baaaf4..50f2b65 100644 (file)
@@ -1,2 +1,2 @@
 Error at ./error_syntax.nit:19,2:
-       Syntax Error: unknown token `?`.
+       Syntax Error: unknown token ``?`.
index b8320ad..73119f1 100644 (file)
@@ -103,8 +103,8 @@ AModule  @1,1--5,3
          |     `--TKwend  end @4,1--3
 5      end
          `--TKwend  end @5,1--3
---> ...        \e[0;31mfun\e[0m fun fun fu
-       ^: Syntax Error: unexpected keyword 'fun'.
+--> ...        fun \e[0;31mfun\e[0m fun fu
+           ^: Syntax Error: unexpected keyword 'fun'.
 -->    %\e[0;31m$\e[0m&^*
         ^: Syntax Error: unknown token `$`.
 --> 
\ No newline at end of file
index ad80c05..a04e1b8 100644 (file)
@@ -5,7 +5,7 @@ _DUMMY_TOOL()
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
        prev="${COMP_WORDS[COMP_CWORD-1]}"
-       opts="--warn --warning --quiet --stop-on-first-error --keep-going --no-color --log --log-dir --nit-dir --help --version --set-dummy-tool --verbose --bash-completion --stub-man --option-a --option-b"
+       opts="--warn --warning --quiet --stop-on-first-error --keep-going --no-color --log --log-dir --nit-dir --help --version --set-dummy-tool --verbose --bash-completion --stub-man --no-contract --full-contract --option-a --option-b"
        if [[ ${cur} == -* ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
                return 0
index f7e7da5..9d4104e 100644 (file)
@@ -12,6 +12,8 @@ Test for ToolContext, try --bash-completion.
   -h, -?, --help          Show Help (This screen)
   --version               Show version and exit
   -v, --verbose           Additional messages from the tool
+  --no-contract           Disable the contracts usage
+  --full-contract         Enable all contracts usage
   -a, --option-a          option a, do nothing
   -b, --option-b          option b, do nothing
   -c                      option c, do nothing
index 18dec64..f9db84c 100644 (file)
@@ -29,7 +29,7 @@ class A
        super Toto is annot
        super Tata is annot, annot2
        super Titi is
-               annot
+               annot # comment
                annot2
        end
        fun foo1 is
@@ -38,7 +38,7 @@ class A
                var x: Toto@foo
        end
        fun foo2 is annot
-       fun foo3 is annot, annot2
+       fun foo3 is annot, annot2 # comment
        fun foo4 is
                annot
                annot2
@@ -56,3 +56,26 @@ interface Tata
 end
 interface Titi
 end
+
+fun baz1 is
+end
+fun baz2 is
+       # comment
+
+       # comment
+end
+fun baz3 is
+       # comment
+
+       # doc
+       annot #comment
+
+       # comment
+
+       # comment
+
+       annot2
+       # doc2 bis
+       annot2
+       # comment
+end
diff --git a/tests/syntax_callref.nit b/tests/syntax_callref.nit
new file mode 100644 (file)
index 0000000..cd18f7b
--- /dev/null
@@ -0,0 +1,62 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import functional
+
+redef class Object
+       fun foo: Object
+       do
+               print "foo{self}"
+               return self
+       end
+       fun bar: Object
+       do
+               print "baz{self}"
+               return self
+       end
+       fun baz: Object
+       do
+               print "baz{self}"
+               return self
+       end
+
+        redef fun to_s
+        do
+               # cname without generics (for erasure compiler)
+               var cname = class_name.split('[')[0]
+               return "<{cname}>"
+        end
+end
+
+class Y
+       var quux: Object = self
+end
+
+var x
+
+# self is the implicit receiver
+x = &foo
+x = &foo.bar
+x = &foo.bar.baz
+x = (&foo.bar).baz
+x = &(foo.bar).baz
+
+var y = new Y
+#alt1#x = &y # error since y is a variable
+x = &y.foo
+x = &y.foo.bar
+x = &y.foo.bar.baz
+x = (&y.foo.bar).baz
+x = &(y.foo.bar).baz
+
+x = &y.quux
diff --git a/tests/syntax_lambda.nit b/tests/syntax_lambda.nit
new file mode 100644 (file)
index 0000000..7302d4a
--- /dev/null
@@ -0,0 +1,64 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+class A
+       fun foo(any: Object) do end
+end
+
+class B
+end
+
+fun bar(any: Object) do end
+
+var a = fun do end
+
+var b = fun do print 1 end
+#alt1# var b2 = fun do print 1 # mandatory end
+var b3 = (fun do print 1 end)
+#alt2# var b3 = (fun do print 1) # still mandatory end
+
+var c = fun do
+       print 1
+       return
+end
+
+var d = fun(a: A) do print 1 end
+var d2 = fun(a) do print 1 end # might be a sematic error but is legal syntax
+
+var e = fun: A do return new A end
+
+var f = fun(a: A, b: B...): C do return a.foo(b) end
+
+var g = [fun: Int do return 1 end, fun: Int do return 2 end]
+
+bar(fun do print 1 end)
+bar fun do print 1 end
+
+bar(
+fun
+do
+       print 1
+end
+)
+
+(fun do print 1 end).bar
+fun do print 1 end.bar # this is unexpectedly legal
+
+var z = fun do
+       return fun do
+               return 1
+       end
+end
+
+fun do fun do end.foo fun do end end.bar # hmmm
diff --git a/tests/test_astbuilder.args b/tests/test_astbuilder.args
new file mode 100644 (file)
index 0000000..bebc463
--- /dev/null
@@ -0,0 +1 @@
+test_astbuilder/test_astbuilder.nit
diff --git a/tests/test_astbuilder/test_astbuilder.nit b/tests/test_astbuilder/test_astbuilder.nit
new file mode 100644 (file)
index 0000000..337ad91
--- /dev/null
@@ -0,0 +1,38 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# The goal of this code is to check the astbuilder features
+
+class A
+
+       fun titi
+       do
+               print "Test print"
+       end
+
+       fun toto(int: Int, float: Float, bool: Bool, char: Char): Int
+       do
+               var test_int = int
+               var test_float = float
+               var test_bool = bool
+               var test_char = char
+               self.titi
+               return 1
+       end
+end
+
+var a = new A
+a.toto(10, 2.0, true, 'c')
+print "Test astbuilder"
+print 'c'
diff --git a/tests/test_callref.nit b/tests/test_callref.nit
new file mode 100644 (file)
index 0000000..08c3219
--- /dev/null
@@ -0,0 +1,110 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import functional
+
+redef class Object
+       fun toto(x: Int): Int
+       do
+               return x + 1
+       end
+end
+
+redef class Int
+       redef fun toto(x) do return x + self
+
+       fun mult_by(x: Int): Int do return x * self
+end
+
+class A
+       fun fun1: String
+       do
+               return "in A::fun1"
+       end
+end
+
+class B
+       super A
+
+       redef fun fun1
+       do
+               return "in B::fun1"
+       end
+end
+
+class Counter
+       var x = 0
+       fun incr do x += 1
+end
+
+class C[E]
+       var x: E
+       redef fun to_s
+       do
+               if x != null then
+                       return "x is {x.as(not null)}"
+               end
+               return "x is null"
+       end
+
+       fun bar: C[E] do return self
+       fun foo: Fun0[C[E]] do return &bar
+end
+
+var a = new A
+var b: A = new B
+
+var f1 = &a.fun1
+print f1.call  # "in A::fun1"
+
+var f2 = &b.fun1
+print f2.call  # "in B::fun1"
+
+var f3 = &10.mult_by
+print f3.call(10)      # 100
+
+var f4 = &f2.call
+print f4.call  # "in B::fun1"
+
+var f5: Fun0[Object] = &f4.call
+print f5.call
+print f5.call
+
+print((&10.toto).call(100))    # 110
+print((&"allo".toto).call(2))  # 3
+
+var cnt = new Counter
+var p1 = &cnt.incr
+var ps = [p1,p1,p1,p1,p1]
+
+for p in ps do p.call
+print cnt.x    # 5
+
+var c1 = new C[nullable Object](null)
+var c2 = new C[nullable Int](null)
+
+var f6 = &c1.to_s
+var f7 = &c2.to_s
+
+print f6.call  # "x is null"
+print f7.call  # "x is null"
+
+c1.x = "test"
+c2.x = 100
+
+print f6.call  # "x is test"
+print f7.call  # "x is 100"
+
+var f8 = c2.foo
+print f8.call  # "x is 100"
diff --git a/tests/test_file_read3.nit b/tests/test_file_read3.nit
new file mode 100644 (file)
index 0000000..f81a854
--- /dev/null
@@ -0,0 +1,52 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+var f
+var i
+var l = 0
+
+f = new FileReader.open("test_file_read.nit")
+i = f.each_line
+while i.is_ok do
+       l += 1
+       print i.item
+       print i.is_ok
+       i.next
+end
+f.close
+
+print "---"
+
+f = new FileReader.open("test_file_read.nit")
+i = f.each_line
+while i.is_ok do
+       print i.is_ok
+       print i.item
+       print i.is_ok
+       print i.item
+       print i.is_ok
+       i.next
+end
+f.close
+
+print "---"
+
+f = new FileReader.open("test_file_read.nit")
+i = f.each_line
+for x in [0..l[ do
+       print i.item
+       print i.item
+       i.next
+end
+f.close
index 7740b5f..ff71517 100755 (executable)
@@ -15,7 +15,7 @@
 
 # Run some tests on each engine
 
-engine=(nitcg nitcg nitcs nitcsg nitce niti nitvm)
+engine=(nitcg nitcg nitcs nitcsg nitce niti)
 if uname | grep MINGW64 1>/dev/null 2>&1; then
        engine=(nitcg nitcg nitcs nitcsg nitce)
 fi
index 721171d..c19a9a8 100755 (executable)
@@ -846,6 +846,10 @@ fi
 
 echo >>$xml "</testsuite></testsuites>"
 
+if type junit2html >/dev/null; then
+       junit2html "$xml"
+fi
+
 if [ -n "$nok" ]; then
        exit 1
 else